{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 克里金(Kriging)插值与可视化\n",
    "https://mp.weixin.qq.com/s?__biz=MzkzNjI0MTIyMg==&mid=2247485578&idx=1&sn=c0701b03864266d9789f558239012259&chksm=c2a0f9a3f5d770b56adebdfeacb28511d3bd04c0cb06d61abe424117f3f07c736c9c9d7ef23b&mpshare=1&scene=1&srcid=0923MalYCxzCu0SpAudWM4M2&sharer_sharetime=1632394565876&sharer_shareid=02c00284fab3e4c5e9417de504f50157&exportkey=AZTAwhx0EtvVl0VLUENuYO0%3D&pass_ticket=IzeLGq22cC2hHDvi6dEzF98U%2B7UaDhOjy9mHCYRniQ3d092Bi7GK2Pijh2Sr33Zy&wx_header=0#rd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: PyKrige in d:\\programdata\\anaconda3\\lib\\site-packages (1.6.1)\n",
      "Requirement already satisfied: numpy<2,>=1.14.5 in d:\\programdata\\anaconda3\\lib\\site-packages (from PyKrige) (1.21.2)\n",
      "Requirement already satisfied: scipy<2,>=1.1.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from PyKrige) (1.7.1)\n",
      "Requirement already satisfied: plotnine in d:\\programdata\\anaconda3\\lib\\site-packages (0.8.0)\n",
      "Requirement already satisfied: statsmodels>=0.12.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (0.12.2)\n",
      "Requirement already satisfied: scipy>=1.5.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (1.7.1)\n",
      "Requirement already satisfied: numpy>=1.19.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (1.21.2)\n",
      "Requirement already satisfied: pandas>=1.1.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (1.3.2)\n",
      "Requirement already satisfied: patsy>=0.5.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (0.5.1)\n",
      "Requirement already satisfied: descartes>=1.1.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (1.1.0)\n",
      "Requirement already satisfied: matplotlib>=3.1.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (3.4.3)\n",
      "Requirement already satisfied: mizani>=0.7.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from plotnine) (0.7.3)\n",
      "Requirement already satisfied: pillow>=6.2.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib>=3.1.1->plotnine) (8.3.2)\n",
      "Requirement already satisfied: cycler>=0.10 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib>=3.1.1->plotnine) (0.10.0)\n",
      "Requirement already satisfied: pyparsing>=2.2.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib>=3.1.1->plotnine) (2.4.7)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib>=3.1.1->plotnine) (1.3.2)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib>=3.1.1->plotnine) (2.8.2)\n",
      "Requirement already satisfied: six in d:\\programdata\\anaconda3\\lib\\site-packages (from cycler>=0.10->matplotlib>=3.1.1->plotnine) (1.16.0)\n",
      "Requirement already satisfied: palettable in d:\\programdata\\anaconda3\\lib\\site-packages (from mizani>=0.7.3->plotnine) (3.3.0)\n",
      "Requirement already satisfied: pytz>=2017.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from pandas>=1.1.0->plotnine) (2021.1)\n",
      "Requirement already satisfied: openpyxl in d:\\programdata\\anaconda3\\lib\\site-packages (3.0.5)\n",
      "Requirement already satisfied: et-xmlfile in d:\\programdata\\anaconda3\\lib\\site-packages (from openpyxl) (1.0.1)\n",
      "Requirement already satisfied: jdcal in d:\\programdata\\anaconda3\\lib\\site-packages (from openpyxl) (1.4.1)\n"
     ]
    }
   ],
   "source": [
    "!pip install PyKrige\n",
    "!pip install plotnine\n",
    "!pip install openpyxl\n",
    "#python 使用清华源进行pip安装的方法\n",
    "#pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "\n",
    "pipwin install fiona  -i https://pypi.tuna.tsinghua.edu.cn/simple\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "module 'pyproj' has no attribute '__version__'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-7-03b9d2a80f35>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mpykrige\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mok\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mOrdinaryKriging\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0mplotnine\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mplotnine\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[1;33m*\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeopandas\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mgpd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mqplot\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mqplot\u001b[0m            \u001b[1;31m# noqa: F401\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mggplot\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mggplot\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mggsave\u001b[0m  \u001b[1;31m# noqa: F401\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mggplot\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0msave_as_pdf_pages\u001b[0m  \u001b[1;31m# noqa: F401\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mwatermark\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mwatermark\u001b[0m    \u001b[1;31m# noqa: F401\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mmapping\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[1;33m*\u001b[0m              \u001b[1;31m# noqa: F401,F403,E261\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\qplot.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mpatsy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meval\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mEvalEnvironment\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mggplot\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mggplot\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     10\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mmapping\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maes\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0maes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mall_aesthetics\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscaled_aesthetics\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     11\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mlabels\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mlabs\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\ggplot.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mmapping\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maes\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0maes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmake_labels\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mlayer\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mLayers\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacets\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mfacet_null\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     21\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacets\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlayout\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mLayout\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     22\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0moptions\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mget_option\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\facets\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacet_grid\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mfacet_grid\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacet_null\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mfacet_null\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacet_wrap\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mfacet_wrap\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mlabelling\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mlabel_value\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel_both\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel_context\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mlabelling\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mlabeller\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mas_labeller\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\facets\\facet_grid.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmatch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mjoin_keys\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexceptions\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mPlotnineError\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacet\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mfacet\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlayout_null\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcombine_vars\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0madd_missing_facets\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mfacet\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0meval_facet_vars\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mstrips\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mstrip\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\facets\\facet.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     11\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mcross_join\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmatch\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     12\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexceptions\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mPlotnineError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mPlotnineWarning\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 13\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscales\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscales\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mScales\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     14\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     15\u001b[0m \u001b[1;31m# For default matplotlib backend\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\scales\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     81\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mscale_xy\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mscale_y_timedelta\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     82\u001b[0m \u001b[1;31m# limits\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 83\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mlimits\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mxlim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mylim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlims\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexpand_limits\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     84\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\scales\\limits.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmapping\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maes\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0maes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mall_aesthetics\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeoms\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_blank\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      9\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscales\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscales\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmake_scale\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexceptions\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mPlotnineError\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\geoms\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     25\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mgeom_line\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_line\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     26\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mgeom_linerange\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_linerange\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 27\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mgeom_map\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_map\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     28\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mgeom_path\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_path\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     29\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mgeom_point\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mgeom_point\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\plotnine\\geoms\\geom_map.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m     \u001b[1;32mimport\u001b[0m \u001b[0mgeopandas\u001b[0m  \u001b[1;31m# noqa: F401\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      8\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m     \u001b[0mHAS_GEOPANDAS\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\geopandas\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mgeopandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_config\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0moptions\u001b[0m  \u001b[1;31m# noqa\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mgeopandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeoseries\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mGeoSeries\u001b[0m  \u001b[1;31m# noqa\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mgeopandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeodataframe\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mGeoDataFrame\u001b[0m  \u001b[1;31m# noqa\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mgeopandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpoints_from_xy\u001b[0m  \u001b[1;31m# noqa\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\geopandas\\_config.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m    124\u001b[0m use_pygeos = Option(\n\u001b[0;32m    125\u001b[0m     \u001b[0mkey\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"use_pygeos\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 126\u001b[1;33m     \u001b[0mdefault_value\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0m_default_use_pygeos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    127\u001b[0m     doc=(\n\u001b[0;32m    128\u001b[0m         \u001b[1;34m\"Whether to use PyGEOS to speed up spatial operations. The default is True \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\geopandas\\_config.py\u001b[0m in \u001b[0;36m_default_use_pygeos\u001b[1;34m()\u001b[0m\n\u001b[0;32m    110\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    111\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_default_use_pygeos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 112\u001b[1;33m     \u001b[1;32mimport\u001b[0m \u001b[0mgeopandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_compat\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    114\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mUSE_PYGEOS\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\geopandas\\_compat.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;31m# -----------------------------------------------------------------------------\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m \u001b[0mPYPROJ_LT_3\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mLooseVersion\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpyproj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__version__\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mLooseVersion\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"3\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m: module 'pyproj' has no attribute '__version__'"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from pykrige.ok import OrdinaryKriging\n",
    "import plotnine\n",
    "from plotnine import *\n",
    "import geopandas as gpd\n",
    "import shapefile\n",
    "import matplotlib.pyplot as plt\n",
    "import cartopy.crs as ccrs\n",
    "import cartopy.io.shapereader as shpreader\n",
    "import cmaps\n",
    "from matplotlib.path import Path\n",
    "from matplotlib.patches import PathPatch\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>number</th>\n",
       "      <th>name</th>\n",
       "      <th>city</th>\n",
       "      <th>lat</th>\n",
       "      <th>lon</th>\n",
       "      <th>alt</th>\n",
       "      <th>meiyu</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>58366</td>\n",
       "      <td>崇明</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.6664</td>\n",
       "      <td>121.4927</td>\n",
       "      <td>4.3</td>\n",
       "      <td>632.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>58367</td>\n",
       "      <td>徐家汇</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.1921</td>\n",
       "      <td>121.4316</td>\n",
       "      <td>4.6</td>\n",
       "      <td>549.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>58370</td>\n",
       "      <td>浦东</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.2300</td>\n",
       "      <td>121.5300</td>\n",
       "      <td>4.4</td>\n",
       "      <td>565.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>58362</td>\n",
       "      <td>宝山</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.3908</td>\n",
       "      <td>121.4447</td>\n",
       "      <td>5.5</td>\n",
       "      <td>686.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>58361</td>\n",
       "      <td>闵行</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.1030</td>\n",
       "      <td>121.3659</td>\n",
       "      <td>5.5</td>\n",
       "      <td>488.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>58365</td>\n",
       "      <td>嘉定</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.3618</td>\n",
       "      <td>121.2438</td>\n",
       "      <td>4.4</td>\n",
       "      <td>592.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>58369</td>\n",
       "      <td>南汇</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.0565</td>\n",
       "      <td>121.7882</td>\n",
       "      <td>5.0</td>\n",
       "      <td>449.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>58461</td>\n",
       "      <td>青浦</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.1342</td>\n",
       "      <td>121.1222</td>\n",
       "      <td>4.0</td>\n",
       "      <td>527.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>58463</td>\n",
       "      <td>奉贤</td>\n",
       "      <td>上海</td>\n",
       "      <td>30.8873</td>\n",
       "      <td>121.4955</td>\n",
       "      <td>4.6</td>\n",
       "      <td>394.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>58460</td>\n",
       "      <td>金山</td>\n",
       "      <td>上海</td>\n",
       "      <td>30.7300</td>\n",
       "      <td>121.3500</td>\n",
       "      <td>5.2</td>\n",
       "      <td>475.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>58462</td>\n",
       "      <td>松江</td>\n",
       "      <td>上海</td>\n",
       "      <td>31.0368</td>\n",
       "      <td>121.2336</td>\n",
       "      <td>4.2</td>\n",
       "      <td>532.3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    number  name city      lat       lon        alt  meiyu\n",
       "0    58366    崇明   上海  31.6664  121.4927        4.3  632.1\n",
       "1    58367   徐家汇   上海  31.1921  121.4316        4.6  549.5\n",
       "2    58370    浦东   上海  31.2300  121.5300        4.4  565.6\n",
       "3    58362    宝山   上海  31.3908  121.4447        5.5  686.4\n",
       "4    58361    闵行   上海  31.1030  121.3659        5.5  488.7\n",
       "5    58365    嘉定   上海  31.3618  121.2438        4.4  592.0\n",
       "6    58369    南汇   上海  31.0565  121.7882        5.0  449.6\n",
       "7    58461    青浦   上海  31.1342  121.1222        4.0  527.3\n",
       "8    58463    奉贤   上海  30.8873  121.4955        4.6  394.6\n",
       "9    58460    金山   上海  30.7300  121.3500        5.2  475.2\n",
       "10   58462    松江   上海  31.0368  121.2336        4.2  532.3"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_excel('meiyu_sh_2020.xlsx')\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'np' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-5-57e4849a3c8b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'meiyu'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;31m# 生成经纬度网格点\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mgrid_lon\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m120.8\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m122.1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1300\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      9\u001b[0m \u001b[0mgrid_lat\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m30.6\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m31.9\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1300\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'np' is not defined"
     ]
    }
   ],
   "source": [
    "# 读取站点经度\n",
    "lons = df['lon']\n",
    "# 读取站点纬度\n",
    "lats = df['lat']\n",
    "# 读取梅雨量数据\n",
    "data = df['meiyu']\n",
    "# 生成经纬度网格点\n",
    "grid_lon = np.linspace(120.8, 122.1,1300)\n",
    "grid_lat = np.linspace(30.6, 31.9,1300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'grid_lon' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-6-93d1288d3936>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mOK\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mOrdinaryKriging\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlons\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlats\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvariogram_model\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'gaussian'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnlags\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mz1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mss1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mOK\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'grid'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgrid_lon\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgrid_lat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      3\u001b[0m \u001b[0mz1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'grid_lon' is not defined"
     ]
    }
   ],
   "source": [
    "OK = OrdinaryKriging(lons, lats, data, variogram_model='gaussian',nlags=6)\n",
    "z1, ss1 = OK.execute('grid', grid_lon, grid_lat)\n",
    "z1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'np' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-7-b17464162904>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mxgrid\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mygrid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmeshgrid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgrid_lon\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgrid_lat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'np' is not defined"
     ]
    }
   ],
   "source": [
    "xgrid, ygrid = np.meshgrid(grid_lon, grid_lat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'xgrid' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-8-5c20320b56e7>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_grid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlong\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxgrid\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mygrid\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'xgrid' is not defined"
     ]
    }
   ],
   "source": [
    "df_grid = pd.DataFrame(dict(long=xgrid.flatten(),lat=ygrid.flatten()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'z1' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-9-8f58715f351a>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf_grid\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"Krig_gaussian\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mz1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mdf_grid\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'z1' is not defined"
     ]
    }
   ],
   "source": [
    "df_grid[\"Krig_gaussian\"] = z1.flatten()\n",
    "df_grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>POLYGON ((121.45769 31.22020, 121.45676 31.223...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>POLYGON ((121.45769 31.22020, 121.46071 31.213...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>POLYGON ((121.43946 31.21448, 121.43746 31.211...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>POLYGON ((121.45769 31.22020, 121.45218 31.217...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>POLYGON ((121.35418 31.23712, 121.35605 31.237...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>POLYGON ((121.48541 31.31157, 121.48566 31.303...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>POLYGON ((121.51649 31.24695, 121.51600 31.251...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>POLYGON ((121.35871 30.97786, 121.35126 30.975...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>POLYGON ((121.42525 31.27066, 121.41950 31.265...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>POLYGON ((121.15374 31.27665, 121.15548 31.278...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>MULTIPOLYGON (((121.57048 30.99835, 121.56796 ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>MULTIPOLYGON (((120.99673 30.95031, 121.00205 ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>POLYGON ((121.32385 31.16293, 121.32722 31.156...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>POLYGON ((121.15374 31.27665, 121.15392 31.272...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>POLYGON ((121.57048 30.99835, 121.57675 30.999...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>MULTIPOLYGON (((121.97518 31.61703, 121.98825 ...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             geometry\n",
       "0   POLYGON ((121.45769 31.22020, 121.45676 31.223...\n",
       "1   POLYGON ((121.45769 31.22020, 121.46071 31.213...\n",
       "2   POLYGON ((121.43946 31.21448, 121.43746 31.211...\n",
       "3   POLYGON ((121.45769 31.22020, 121.45218 31.217...\n",
       "4   POLYGON ((121.35418 31.23712, 121.35605 31.237...\n",
       "5   POLYGON ((121.48541 31.31157, 121.48566 31.303...\n",
       "6   POLYGON ((121.51649 31.24695, 121.51600 31.251...\n",
       "7   POLYGON ((121.35871 30.97786, 121.35126 30.975...\n",
       "8   POLYGON ((121.42525 31.27066, 121.41950 31.265...\n",
       "9   POLYGON ((121.15374 31.27665, 121.15548 31.278...\n",
       "10  MULTIPOLYGON (((121.57048 30.99835, 121.56796 ...\n",
       "11  MULTIPOLYGON (((120.99673 30.95031, 121.00205 ...\n",
       "12  POLYGON ((121.32385 31.16293, 121.32722 31.156...\n",
       "13  POLYGON ((121.15374 31.27665, 121.15392 31.272...\n",
       "14  POLYGON ((121.57048 30.99835, 121.57675 30.999...\n",
       "15  MULTIPOLYGON (((121.97518 31.61703, 121.98825 ..."
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sh = gpd.read_file('Shanghai.shp')\n",
    "sh"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sh.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "ename": "ShapefileException",
     "evalue": "Shapefile Reader requires a shapefile or file-like object. (no dbf file found)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mShapefileException\u001b[0m                        Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-31-c15a86175dc6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     27\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mcontour\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     28\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 29\u001b[1;33m \u001b[0mshp2clip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Shanghai.shp'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     30\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     31\u001b[0m \u001b[0mcb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolorbar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-31-c15a86175dc6>\u001b[0m in \u001b[0;36mshp2clip\u001b[1;34m(originfig, ax, shpfile)\u001b[0m\n\u001b[0;32m     12\u001b[0m     \u001b[0mvertices\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     13\u001b[0m     \u001b[0mcodes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m     \u001b[1;32mfor\u001b[0m \u001b[0mshape_rec\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshapeRecords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     15\u001b[0m         \u001b[0mpts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mshape_rec\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpoints\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     16\u001b[0m         \u001b[0mprt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mshape_rec\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparts\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpts\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\shapefile.py\u001b[0m in \u001b[0;36mshapeRecords\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1273\u001b[0m         \"\"\"Returns a list of combination geometry/attribute records for\n\u001b[0;32m   1274\u001b[0m         all records in a shapefile.\"\"\"\n\u001b[1;32m-> 1275\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mShapeRecords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miterShapeRecords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1276\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1277\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0miterShapeRecords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\shapefile.py\u001b[0m in \u001b[0;36miterShapeRecords\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1278\u001b[0m         \"\"\"Returns a generator of combination geometry/attribute records for\n\u001b[0;32m   1279\u001b[0m         all records in a shapefile.\"\"\"\n\u001b[1;32m-> 1280\u001b[1;33m         \u001b[1;32mfor\u001b[0m \u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrecord\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mizip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miterShapes\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miterRecords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1281\u001b[0m             \u001b[1;32myield\u001b[0m \u001b[0mShapeRecord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrecord\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrecord\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1282\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\shapefile.py\u001b[0m in \u001b[0;36miterRecords\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1256\u001b[0m         Useful for large shapefiles or dbf files.\"\"\"\n\u001b[0;32m   1257\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumRecords\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1258\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__dbfHeader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1259\u001b[0m         \u001b[0mf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getFileObj\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdbf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1260\u001b[0m         \u001b[0mf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mseek\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__dbfHdrLength\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\shapefile.py\u001b[0m in \u001b[0;36m__dbfHeader\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1119\u001b[0m         \u001b[1;34m\"\"\"Reads a dbf header. Xbase-related code borrows heavily from ActiveState Python Cookbook Recipe 362715 by Raymond Hettinger\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1120\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdbf\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1121\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mShapefileException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Shapefile Reader requires a shapefile or file-like object. (no dbf file found)\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1122\u001b[0m         \u001b[0mdbf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdbf\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1123\u001b[0m         \u001b[1;31m# read relevant header parts\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mShapefileException\u001b[0m: Shapefile Reader requires a shapefile or file-like object. (no dbf file found)"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcEAAAHBCAYAAAARuwDoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC2y0lEQVR4nOydd1hTZxuH7wxC2HuDICCgIuLee6+6qq3a2trWTrvs1u5lp3bv2mlb62rde4+690IUBBXZe4Xk5PuDyqeVESAhCbz3dX3XV5MznoSc8zvP8z5DptfrEQgEAoGgKSI3twECgUAgEJgLIYICgUAgaLIIERQIBAJBk0WIoEAgEAiaLEIEBQKBQNBkESIoEAgEgiaLsro3e/cK02dnFzWULQKBSbDR6sxtgqAGypQKc5sgaMScOHl1nV6vH1rZe9WKYHZ2EcuW3GsaqwQCE+KTlmNuEwR1JNXb1dwmCBoZLaLe8qzqvWpFUCCwNoT4WT/X/w2FIApMjRBBgdUjhK/xIgRRYGqECAqsEiF8TQ8hiAJTIERQYFUI8ROAEESB8RAiKLAKhPgJquLab0OIoaAuCBEUWCxC+AS1QYihoC4IERRYHDWJn16v53JaARk5Jahs5KhsFPh5OuBgZ9MwBgosGhEqFdQGIYICi6Ey8Sso0nA8PoPDZ9PJzC1BJgOZDAK8HPFytUOjlSgt03ElrYCC4jLs1UpuHxxJoI9Tw38AgcUhvENBTQgRFJid/4rf+Us5rNmdSGZOMU72KmIivJg4KAJPV7saj5WVV8If686SklHI3aNaERboahqjBVaFEENBVQgRFJiVazenc0nZLNtynuLSMkIDXLhtUARebva1Pp67s5qHJ7SlpFTL93+fJDv/LA+OjzFIQAWNHyGGgv8iRFBgFq7djA6fTWPJpnOEBbry8IQYHO1VRjm+2lbJIxPbkpVXwjdLj+OgVnLvmGjs1WLdUCDEUPB/hAgKGhSftBz0ej07jlxhza4E2kZ48er93VAqTTPQxN1ZzfN3d+JiSh7v/LCfFs1cmTw0CoVCDFARCDEUCBEUNBA+aTmUlGpZsPkcpy5k0aOtP28+3AO5XNYg5w/2c+b1h7pz5Gw6sz7fRb9OQQzpGoxM1jDnF1g2QgybLkIEBSYne98Ffth6Hk2ZjlsHtGDKsJZmsyU20ou2EZ5s2p/M85/uZOKgCDq09DGbPQLLQohh00OIoMAk5OeXsGPhQS5cziUy2I0ZE9sabb2vvshkMgZ2bka/DoEs3BDH31vPM210a5r7u5jbNIGFIMSw6SBEUGBUTp9JZdWqU/igY2y/cKbd0trcJlWJQiFn8tAoiku1zP/7JLkFpTwwrg0eIpNU8C9CDBs/QgQFRuHQoUus33CGjr4OvHV7DCob65kUbvdvJmlmbgnfLjuOk72K6WOjreozCEyLT1qOEMJGihBBQZ3R6/Xs3JXAjh3nadcukA+mtrfqrEsPl/JM0vjkHGZ9vos7h7ekbYSXuc0SWAjCK2ycWO8dS2A2JEnPuvVnmPPORvR6PR/d05G72/tZtQBeT3iQK+891ot9J6/y7k/7ySvUmNskgQUhGrs3LoQnKKgV+w8ksX7DWQYPimTWC4Ma7Q1BLpcxfWwbrmYU8uEvB4kIdmPSkMgGK+kQWDbCK2w8NI5Hd4HJ0ev1LPjtAOfPZzDr+YF06tis0Qrg9fh6OvDag90IDXBm7oKD5jZHYGH4pOU0ieugMSNEUFAjhYUa3n1vE61a+nL7be3xTc9tchd+txh/osM9+X3dWXObIrBAmtr10JgQIiioloSETD74cDP33duVdu0Cm/TFPrRbCAVFGnYduWJuUwQWiPAKrRMhgoIq2bDxLKvWnGL2rMF4ejqKCxy4b0w0m/Yncf5SjrlNEVgo4jqxLoQICirlx5/3odVKzHi4F0qlXFzY/yKTyXhhWie+XnKcy2kF5jZHYKGI68V6ECIouImfft5PWKgnw4aW9/gUF/SN2CgVvP5gN+YuOERmbom5zRFYKCI8ah0IERTcwILfDxIc7EavnqHiIq4Gta2Sl6d34e35+yjT6sxtjsCCEdeQZSNEUFDBwj8P4+PtSN8+4eLCNQAXR1senhDDnB/2o9frzW2OwIIR15PlIkRQAMCSpUdxcbFj4IBIccHWgrBAV0b1DuW5T3Zy+Gyauc0RWDAismKZiI4xAv5efhxbWyVDh0SJi7QOtIv0Jibckw9/PYRcJhP9RgXVIppxWxbCE2zirFp9Cr0eRo5oLQSwHigUcmZOac9va8+I0KigRsS1ZjkIEWzCrF13huLiMsaMbiMuSiOgVMoZ0LkZ6/+5aG5TBFaAuOYsAyGCTZRNm+PIySni1vFtxcVoJNbsTmTn4ctiDqHAYMS1Z36ECDZBtm2PJyUlj9tvay8uQiNSqtHSr1MQ/ToGmdsUgRUhEmbMixDBJsbOXRdISMzijikdxYVnZEb3CWPdnosUl2rNbYrAChHXo3kQItiE2LU7gbNn07h7amdxwZkAmUzGwxNi+HLRUXObIrBSxHXZ8AgRbCKsWXuaxMRM7r2nq7jQTEgzX2fs7Ww4nZBpblMEVoq4PhsWIYJNgEWLj6Ap0zFlckdzm9IkuG90NPOXn0SSRKmEoG4IIWw4hAg2YvR6Pd/P/wdPTwdGj4oGxMXVECiVcu4c3lJMohfUC3GtNgyiY0wjRZL0fPrZdnr0CKVjh/JsRXFRNRwxLbzIzC3h6yXHeGB8TLXbOiWmN4hN+SGik421IbrLmB4hgo0QjUbH3HlbGDOmDVGRPoAQQHPQr2MQmjId8xYc4qXugchkMrPaU53YCoG0XIQQmhYhgo2MoiINH8zdwt13daZZkBsgBLChuV5sbvVz4EBxKY//epgJnYPo0cITudy8YlgZlQmkEEbLQQih6RAi2IjIySlm3sdbmfFwL7y8HAEhgA1BTeHMjqHuxDRzYf3xVGYtOo6DrYJxHQNpHejSQBbWDSGMloUQQtMgRLCRcDU1j6++3s3TM/vh5KQ2tzmNmrqs4amUCka282dkO3/yi8tYdvAy3269wAP9wmgZ4GwCK03Dfz+7EMWGRQih8REi2Ai4eDGLb77bw0uzB6NW21S8LrxA42HM5BUnOxum9gzh9q5BfL8tgR92JNC9hScDWnnjZGdT8wEsiOu/FyGIDYMQQuMiRLCR0KKFF19/s5trlWmBcogMcSMy2I1Ab0ezJ2VYI6bO2lQpFTw0IBy9Xs++C1l8vjGeglItcpkMJ7USL2dbPB1t8XFRExPkgq2FN+YWgthwCCE0HrLqZp+1ifbTL1tybwOaIzAGPmk5ZOaWEHcxi7MXs0m6mo9CIePx29vhaK8yt3kWT0OVLFSFXq+nsFRLen4pGfkaUnKKOZqUQ0mZhIOtguhAF2yVChRyGUqFjC5h7tipLPd5Vgii6RBCaBgtot46qNfrK+0WYrlXjqBeeLio6RbjT7cYfwDSs4t4+as9vHJ/V1wcbc1sneVhbuG7HplMhqPaBke1Dc3/1Y9b2gcAUFiq5fTlPMp0ElpJT2mZxPN/HmdCp0B6Rlqm2Fz7boUYCiwR4Qk2MqpbB8zKK+HN7/Yy+94ueLiI5BmwLPGrK3q9nl92XeR8WgHPjojCwdbyn22FIBoP4Q3WTHWeoGib1oioKRHG3VnNqw904+35+0jLKmoYoywUp8T0RiGAUO45Tu0Zwv19Q5m96DhbTqWZ26QaaUzfv7kRCXD1Q4hgE8PZQcXrD3bjvZ8PcDmtwNzmNDiN+eYb4G7PvCmxpOWV8MKfx3j9r5OsPHyFzPxSc5tWJY3579GQCCGsOyIc2kio7UVQUqrl5a/28PCEtoT4W0+dWl1pijfa0jIdhy/msCc+g0tZxTw1LBJ/Nztzm1UtIkxaP0RotHJEYkwjpy5PgWpbJW8+3J1Xv97DtNHRtAhyNbpdlkBTFL9r2Noo6BruQddwD67mFLPkwCVSckqQAb2jvBgU7WtuE29CJNHUD1E6UXuECDZhVDYKXn+wO699+w+ThkTSKtTD3CYZjaYsfpXh62rHIwNbAOUTRl5ddhJ/VzuLbd0mxFDQUIg1QSunvmsBSqWc1x7oxuJN5zh81vITKgxBCGD1yOUyXh7Tig0nUvlobRxanWRuk6pErBnWHrE+WDuECAqQy2W8dF8X1u5OZO/xFHObU2fEDdNwlAo5TwyNYGC0D08sOMLrf50kp1BjbrOqRPxda4cQQsMRImjFGPOHLpPJeP7uTuw8eoXthy4Z7bgNgRC/uhMd6MInd7TjkQHhvLz0BMeTc8xtUpWIv3PtEEJoGEIEBRXIZDKeuqMDx85lsP6fi+Y2xyDETbH+yOUyPJxsmTclljXHrvLHP0nmNqlaxN9cYEyECFoppnzKm3FbLBdT8li544LJzmEMxM3QuCjkcp4dEYWTWskrS0+g0erMbVKVCK/QMIQ3WDNCBK2QhvhhTx/bhuy8EhZvOmfyc9UWcQM0LSNi/ZnaI4TZi07w9ebzFGu05japSsTvoGaEEFaPEEFBldw5ohWSpGfBmtPmNqUCcdNrGMJ8HHl/Ulv6tvTireWneXflaTIstPOMeCgS1AfRMcbKMMdT3fJt50nLLua+MdENfu7rETc685GaW8KPOxLILS4jyN2e4W39CPZ0MLdZNyHqCqumKRfRi44xgnpxS58w1u1J5LM/jzBjYqxZbBACaF58XNQ8N7IlAEkZhaw+lkJSZhEtfJyY2jOYpMwi5q2Nw9PJlr5R3nRv4YFS0fCBJlFkXzWim0zlCE/QijB3bH/bwUscOJ3KzCntG2xSvRA/y2b3uQxWHrnCmSv5fHtPRxxslWw9k8bOuAwUchmTujYjyky9aYUQ3kxTFcHqPEEhglaEuUUQYO/xFDbtT+aFaZ1MLoRCAK0HvV5/0++hsFTL73uSOJOSR48Wnoxq59/g3qEQwptpikIowqGNAEsQQIAubfywVSl5/dt/ePHeLihMdFMTAmhdVPZA5GCr5L6+oej1enafy+TFxSdQ28jpFu6Jk52S82kFJKYX4qhWMrp9AKHejka3yykxXQihoFqECApqTWykFyobOa98vYdX7++GUmlcIRQC2LiQyWT0iPCkR4QnGq2Of+KzyC0qo0uoB7d1CSK7sIy/Dl4mMeMCbg4qbmnnb9QQqhDCGxFrgzciwqFWgqV4gtcTn5zDd3+d4LUHumGrUhjlmEIAmzZZBaUsP1y+xuhsp2RkrD9tglyMFnoXYvh/mpIQinColWOJAggQHuTKwxNimP3FLt54qDt2tvX7OQkBFLg72nJ3r+YA5BWXsfLwFX7bk4S9rYLhMX50aO5WL0EUXqHgvwhP0AqwVBG8RkpGIe//fIDXHuyGk72qTscQAiiojsJSLWuOpnAwMRtbpZzBbXzpGuaBXF43QRRCWE5T8QZFdqgVY+kCeI2MnGLemr+PV6Z3xdXJtlb7CgEU1IYSjY4NJ1P5Jz4ThVxGv5be9Ir0rHXmqRBCIYIgRNDisRYRBMjOL+H1b/fy4j2d8XC1M2gfIYCC+qDR6thyKp0dceW/o14RXvRv5Y2NgclaQgibhhAKEbRSrEkAr5FfpOGVr/bw7NSO+NbQVksIoMCYaHUSO85msOV0GlpJolu4J4Na+6CuIWmrqQthUxdBkRgjMCpO9irefLg7L3+1h8cntSPIx8ncJgmaCEqFnH6tvOnXyhtJ0vPP+UzeXXUGjVbCw1FF51B32oe4Yf+fBK6mnizT1EsmhAgKjI692oa3Hu7By1/t5v5xbQgLdL1pG+EFCkyJXC6jewtPurfwBCAzv5T9CVl8tC6OIk35nMRQLwe6hHkQ5e/U5IWwKSPCoRaKNYZC/0uZVserX//DHcOjaNnco+J1IYACc6PX60lIL2Tv+SzOpOQhSXp0Ho5Eh3nSoaU3/l7G715j6TRmb1CEQwVmwUap4PUHu/HGd3sZ2y+cthFeQgAFFoFMJiPU2/GGVm1lWol/dHJW70okJaMQAGcHG9pFetMuyrvO5T8Cy0aIoMCkKBRyXp7elTk/7kNxMYNu/4anBAJLw0Ypp5cSYq+bm5lbUMrhs2l8t+wEBcVl6PV6Ar0d6dDSh9ahHkZvGWhOmuraoBBBC6QxhEKvRy6XMWtaZz77dDulWom+Lb3NbZJAUCXXrw+6ONrSt0MQfTsEAeVh1MtpBRw8ncbqXQlodXrkcogKdqdjKx+a+To12JgxgXEQIihoEJwvZjDrllbMXXOWkjIdQ2P8zG2SQFAlVSXKyGQyAn2cCPRxYnTfMAB0OokzidlsO3iJi1fzAbBXK4mN8KJ9S2/cnNQNarugdojEGAuksXmC/10H/GJjPP5udozpEGAmi6yIpKza79PM3fh2NFHqmjFaWFzG0bh0Dp5OJadAA4C3mx2dWvvSJtwDG6VxGs6bgsYYEhWJMVZEYxPAynh4YDjzt13g9z1JTOrWzNzmmJ+6CF1djycEskFwsLOhe1t/urf1r3gtNbOQ/adSWbcnEa1Oj1Iho20LLzpH++JpYIclgfERnqCF0dhEsLps0N92X6RUKzGtd/MGtMgCMLbo1QchijViqvpBTZmOY+cy2H/qKhk5JQD4eTrQJdqXVs3dTTaw2hAamzcoPEGBWaipHGJy92CW7r/El5vieWhAeANZZSYsSfiu5792CVG8CVMV0qtsFHRs5UPHVj4Vr11OK2Dfyass334enU6PrUpBbIQXnVr74u4s1hZNgRBBC6KxeYGGMK5TIKuPpjBv7VmeHBppbnOMi6UKX3Vcs1mIoVkI8HZkrHc4Y/uVPxSWlGo5GpfOb2vOkJ1fil6vJ9jPmc6tfYgMdq/zKCnB/xEiKDAJtSmKH97WD7WNnDkrTvP8yCjrTjG3RuGrjOs/hxBEs7VVU9sq6dLGjy5tyrOp9Xo9SVfz2XfyKks2xyNJeuzVStpH+dChpTcujrUbY1YVTalmUIigwOjUpStM/1Y+qG0UvLbsJK+MbW19QthYxK8yhHcIWEajbZlMRrCfM8F+zhWvFRaXcfhsGj+uOEleYXlBf4ifM52jfYlo5ia8xRoQIiiwGLq38MRWKWf24uO8MT4ahdwKunE0ZvH7L0IMLRIHOxt6xgbQM7a85Eiv13MxpdxbXLzpHHo9qFUKYiO96NjKR9Qt/gchghZCY1kPrG9v0A7N3bG1UfD8wuPMmdim1tPCG4ymJH7/pQmLoSV4gzUhk8kI8XcmxP//3mJxqZYjZ9P4ddXpirrFIB9HOrXyJSrErdJM1KYSEhUiKLA4ogNduL9fKM/8cZR3JsZga2NhhcVNWQCvpwmLobVhZ6ukW4w/3WLK6xb1ej2X0grYd+Iqf22LR5JAZSOnbYQXnVr54uHSdLxFIYICo2HMCREtfJ14YkgET/9+lPduj8FOZQE/VSF+lZOU1aSE0Bq8wZqQyWQE+TjdMPS6pFTL0XMZ/LHuLFl55XWLjqGexLYNIKKFd6NqFn49FnBnEQgqJ9jTgRdGteTp38s9Qic7G/MZIwSwepqYV9gYhPC/qG2VdIn2pUu0b8VrV9IL2JCUw8aNcegkCaVSQauWPsTGBuDh7mBGa42HEEELoDGsB5pqTqC/mx2vjm3NcwuP8fr4aDydjJMCbjBC/GpHE/MKGzv+Xo4MbR3I0CFRAGg0Ok6fucrKlafIyi4kJNidsWNizGxl/Wic/q2gUeHlrOad22J4a/kpDiY0oCgJAawbSVlN4rtrigOiVSoFbWMCuGtqJ558vC8Xk7LNbVK9ESIoqDcNcTNwtrPhw0mxbDuTzi+7Ek1+vqZwEzc54jsUWAFCBAVWg1wuY+awSLyd1Ly0+Dgarc40JxI3b+PRyL/LpuANVrdcY2OjoFSjbThjTIAQQYHVMSTGl2m9m/PkgiNcyS427sEb+U3bLIjvtNES3MyNJCsPiQoRNDPWnhRjrifhUG9H3r+9LR+ti2PHWSPZIG7WpkN8t42S5iHuJCZa999WiKDAarG3VfLubTGcvJzLV5vjqW42Zo2Im7TpaaTfcVMIiVZFcLA7CUIEBU0VS7j4ZTIZD/YPp3WAC88tPEZRaR3WJxrpzdkiEd91o8LR0ZaiIo25zagXQgQFjYJekV48MSSCZ/44SkJ6geE7iptyw9MIv3NLeCA0Jda+bFMdolhe0Gjwd7Nj3pRY3vjrFD0jvBgS41v9DvW8Gev1ehafTOPY1QKun1ZT1eCaUp2efs3dGBTubn2jooyNKKoXWAhCBAV1wlKffFVKBW/c2oZfdiUyd81ZnhgSUfk8tXoK4P5Lufx69CrjWnnzxsAwg/bR6/VsPJ/Fs+viCXO34462vjjaNuFLUAhho8DJ0Za8vBKcna2z6bYIh5qRxhxiMDd39gihT5QXM387Ql5x2Y1v1lMAD17OY0N8FvOGRdCnuZvB+8lkMgaFe/D+0BYMCHXng50XeW3zBS5kFdXLHoFlYKkPhqYmJMSdhMRMc5tRZ4QIChotHZq78+LoVsxedJzTl/OMcsyCUi0/HU7h+d4h9ZrY3cLTnlcHhDGzRzPWnsvkmbXn2HQ+q34ZrtZII1wfbGqENvew6jIJIYKCWmNNT7yeTrbMmxLL0oOXWHbgUr1vum9tS2RWn/oJ4PU42Sp5uEsQ7w4OR6OTeHZdPN/sv0ShxkTdcCwRIYRWTWCgK0nJOeY2o84IERQ0epQKObNvaYU+vYC3tyagk+rmbS06kUqvYFd8TTDJQi6XMSzCk/eHtqBPiBvv7UjkjS0XSC+07vTzpoY1PSAaCxsbBTqdZG4z6owQQUGTYVxrb8a08uKJ1We5ml9aq30Ts4s5mVrA8EhPE1n3fyK9HHhtQBiPdAnii72X+GRPEqVa673JGITwBi2exprDIERQ0DT49ybbytuROYPC+fSfZJadSjNoV61O4oOdF3mhT3NTWngT7vY2vNI/lKEtPJi1IZ4lJ1Mb95qhEEKrxlp/m0IEBbWiMYR7HG2VvDUoHBu5jOfXnSO3pPouM3N3J/FIlyBslea5XCI8HfhwWARuahueWB3HQSMl+QgExsLH24nUtHxzm1EnhAgKGj9VeBgjo7x4qmcwr24+z7aEyjvh70jMxsPOhpbeDqa00CD6h7kzd1gEx64W8ML6eK7k1S6kaxU0Am+wMTwo1pbmIe4kNuTAayMiRFDQpPFyUDF3WAQXc4p5Y8uFG9besovLWHYqnXs6+JvRwhtRyGVM6+DPrD4h/HT4Cu/vSKSoKWWSCiyS5s09uGCltYJCBM1EY11ktjgM8CxkMhlT2/lzZ6wfT6+N49jVfPR6PW9uTeDFvs0tssWZk62SF/o0Z2K0D69uvsCCIylIdcx6tTgagTfY1PD2diQtrRY9ey0IIYICg2nsYZ4QNzs+Gh7JlgvZTFt6iluivHC3tzG3WdUS7GbHe0NbEOpux5Nr4th1McfcJgmaIJb4oGgoTbhxoaDRUwePQiGX8Xj3ZuSXanGyor6e3Zq50iXQhYXHU/nr9Dke6RJIiJuduc0SCCwe4QkKBJVgTQJ4DblcxqS2vrzWP5TFJ9N4a2sCeTVkvlosIiRqdSiVcjRWuD4tRFAgaGTYqxQ83TOYezr48872RL47cLnOXXIEdaOxLx1URlCQG5cu5ZjbjFojRFDQOBGeBH5Otrw9OJwO/k7MXBPHxnjrzN4TWAfNrXSahBBBgaCR087fmY+GR1Cg0TFzdRxn0wvNbZJhiAcZq6J5iLtVTpMQIigwiKYY3mlMyGQyxrTy5p3B4ayPz+TVTefJKiqreUeBwECcnNTkF1hfAwfrW/0XCGpCeBBVolLKebRbMzIKNXy0OwkfRxX3dwrARiGehwVNEyGCAkETxNNBxesDwziVVsBLG8/jbm/DlLa+BDirzW2awIrR6/Xo9XqrqhsUIigQNGFaeTvyzpAWpBdqWHD0KlfySukd4srQFh4ohXcoqCWhoZ6cO5dORIS3uU0xGPErFwgEeDmoeKJ7M94dEo6TrZIXN55nzrYEknJKzGuYCG1bFf36hLNlW7y5zagVwhMUNC7ETbNeyGQy+jR3o09zN7KKylhwNIWk3FK6N3NhZKSnWDtswqR6u9a4jbOzmoJaDqw2N0IEBQJBpbjb2/Bot2bo9Xr2JOfyyqYL2NvImdzWl1B3e3ObJ7BQ/P1duHQph8BAV3ObYhBCBAUCQbXIZDK6N3OlezNXcorL+P1YKheyL9MpwJkxLb1QmWnYsMAyGdC/BavXnubuqZ3NbYpBCBEUNBl0kp6lp9JIyS9lQKg7rbwdrCqLzRJwtbPhoS6B6PV6DlzO4/UtF1Ap5Nwe40OEp/kHDwvMj7e3E5kZVtKQASGCgiaAXq9n4fFU9l/OY3xrb3qHuLLpfDa/HbuKXg+RnvaMiPTE00FlblOtBplMRqdAFzoFupBfquWPY6l8d+AKsX5OjGvlhdpGYW4TBWZEaUXRASGCAqtm9dEUTl3OZUr3YBRyGfO3JdK9mQu9m7sBcD6ziI/3JDMx2ofbY3wr9pvctvy/9Xo9ZzOK+OlwCmmFGjoHOnNLlJdIAKkFTrZKpncKAOBISj5vb0tED4yI9KRLoLPwtpsgcrkMnU5CYQXXkRBBgVWikyS+3HSexIxCZg6N5PW/TuHromZSay9mrDjLiJR8UvJL8Xe25f2hLbCt4slUJpMR5eVAlJcDer2evZfyeGXTBRxVCqa09SVYzOSrFbF+TsT6OVGqlVgdl8HsDedRymW08nagW5ALzVzVQhSbAO4eDmRmFuLt7WRuU2pEiKDAKnlr+WnGdwykdaALAK+Obc3yQ5dxVCnxsLchMaeYecMja3VMmUxG1yAXuga5kF1cxq9HyssDbm/jQ4cAZ1N8jEaLrVLO2FbejG3ljSTpOZVeyPr4LC7llaD/d6qTg0pBK28Hor0dCXZVI5cLcbRUDCmPuB4fb0fS0wuECAoEpiIpo4h1x6/S3NMBe7USHxc10/uFQVIWn46MRF3PNQk3u/LyAK1O4o/jqSw4epUxLb3oFeIqPJlaIpfLiPZxJNrH8YbXC0q1nE4vZGtCNok5xRXi6GanpM2/2/s4qrDGbzs/xMvcJpgVLy9HUtMKaN3a3JbUjBBBgUnR6iQANp1MY8h1a3L14WpOMWWSRLFGR+85W1j6WHeaefw/M9GYCS5KhZw7Yv2YHOPL32fSmbkmjkFhHgyL8LBYMUzMLmbh8VQKNTpUChnN3eyI8LSnhYc9rnY25javAkdbZUVyzfVkFZVxMq2AZafSuVpQCi4pALQNcqVPlBceTrbmMFdQC7y9nDhzJs3cZhiEEEGBSXn+z2OolHKSM4vpEeGBo9rwm/DZlDyKSnUkZxXRPsSN91adYVzHQBbvv8TTwyJpE+RK51B3Br6zjWNvDUatMt3PWS6XMbaVN2NaerHxfBYz18TRLciV8a29UVhQGG/XxRxWnc3gud4huKiVaLQSCdnFnMssYsfFHHKKtRXb2tsoCPcoF8hIT4cq100bGnd7G3qFuNErpDy5iWbu6CSJo0m5/LQzkcwCDbY2cm7tFEirAJfqDyYwC7l5xTg6WsfDihBBgclIyijk9JV8/pzRjbziMt5afpo5E2Oq3D4jvxStTsLX1Y6rOcW8uuwko2L9CXC34+edidzXJ5TkrCLevS0GB9vyn+6gNr4Ul+lIyy+lmYfpf84ymYxB4R4MCvdgd1IOz607R4yvI1Pb+Zv83Iaw/Ew67wwOr/BSVUo5kV4ORHrdXMNXpNERn1XEucwi/jqVTqlOwstBxcAwd1pbSg1lM3cAFHI57UPcaP+vMBaValm4N5kfdyTSLtiNcR0DsBVlGRbD/v1JDB3S0txmGIQQQYFJ0Gh1vLvqDEsf646tjQIHWyUqpfyGMSuSpL8hGeKdlacp0+mJ8nPiYGI2X9zVAbd/Q5t9osq70sc0c73pXJ/d2Z4XFx3n5we7mv6DXce1Liof707idFohLb3NXyyuUsgNFi97lYIYXydifJ0Y/+/aTVqBho3ns/j2wGVGRnoyKNzDhNbWHXtbJdN6NwfgUGI2b/x9ClulnMndggn7z9qjoH7UNikGID2jEC8v6/g7WEb8owlSlx+WNfHB6rOM6xh4w9O5q70N87cncCGtgM2nUhn47jYALmcV8fTvRwj3ceT922MYFuPHt/d0rBDAmhjdIYBTKfmsPnIFrVYyyeepCr1ez4XsYiI9LaOXpqtayb5LuXXe39tRxeS2vnw0PIKE7GI2n7f8huTtQ9x489Y2PD4kgg0nr/LsH0dZduASZQ38WxCUo7+W4WQlCE9QUC80Wh2/70lmXMcAnP5NutDqJB4ZGM7ctXEMaO1Tse1dPUO457v9tA1y5dddFwlyt2PzqVR+3JHIV3d3wP7fEGdIJaG7mphzaxveW32GPV72vDEw3DgfzkDyS7XklWotIulkZo9mfLInmROpBdzTIaDOx5HJZNzbIYDZG+LpH+bO6bRCfj2ags2/nrsekMtkhLiqaentQFtfJ7OvKTrb2fBg//Dyes/zWby67CROaiVTugcT5NFwDylNPTM0/nwGYWGe5jbDYIQICuqEJOn5eVciJy/lkZJbzKXsIkI8HTh3NZ8L6YVE+Doxuv2NN2F3R1vu6B7MtrPpfHtvR37fk4wMGR/f0a5CAOvKoDa+DGjtTedZ6xpUBGUyGXMGhzN3VxJ+Trbc3ynArIkyMpmMx7s3Y/P5LGaujmNcK296hrjW6VgKuQxXtQ1ZRWUsPZXGi32bY3edZ6/VSSTllnAitZD15xIpKpPwc1Jxe4wvXsbI0P13PbC2yGQyuoZ70DXcg6yCUhbsTuJSdhF9orwZ0sYHhVwEwAylLhGrjRvjGDe26rV/S0NWnevaJtpPv2zJvQ1oTtPCJy3H3CYYjFNiesV/a3USzy08xm1dgugc5kFpmY7EjEJKyiTaVrJm1xBIksTIuTtRlGpZcWesWWw4djWfbw9cZlp7f9r7m7+4XpL0/HU6nZ0XcxgR6Un/ULdaJ7tczC5m5dkM2vs7cSK1sKI9WlUk5ZSw4GgKej080b0Z9qp6JKvUUQQrQ6/Xs+1MOmuPXcXTScUd3YPxdTVNN6DG5AnWVgR370kgJSWP8ePamsagOtIi6q2Der2+Y2XviUciQa0o00qsOpJCt3APOoeVJ03Y2iiI9HM2mwACyOVy8orLmNw/jPOZRWaxIcbXiY+GR7L/Uh7vbk9EJ5l3bUQulzGutTcfDmtBqVbiydVxtV4vDHaz42JOCV2DXFAr5fxx7Gq12zdzVfNCn+bcEevHc+vPcTK1oD4fwWjIZDL6tvTmndtiuLNHCAv2JPH8wmNsPZ1mdWtYlkpKSh579iRanADWhPAEzYg1eYJxW87y254kXOxtaOXvzMhYf9T1eco3ARqtjpCZq4hwVbP1vkof+hqMU2kFfLnvEq/0C7WY6RSSpOeXIymcSi9kZo9m+BhYx7UhPpMSrcSoKC9+PnwFW6Wc29rU3PhAJ+l5f8dFwj3suDXap8btb8CIXmBV6CSJdcdT2XYmjSB3e+7oHoxrPf9WTdULLNVomfPORl54biC29VzaMAXVeYJCBM2ItYjggjVnyM4v4bmO/hbd31GSJKJnrWPn3e1wtze/8OSVaHll83kmx/je1BXFnOSXanlzawKDwtwZaGAJxBOrzvLO4HDUNgp+OnQFnV7PtPb+BoVX/zqVxonUAp7vHYLS0KkCDSCC13Mxo5AFuy9SUKplbIdAOoXW7fxNUQRzcor59PMd3HN3FwIstHmBCIcK6sycH/bh7+XAjImxFi2AUB4S9XKytQgBBHBWK5k7LILdSbn8cPCKuc2pwMlWybtDWpCSr2HurosGhQOf7hnMc+vjKdNJ3NXen+Zudjy99hyZRZoa9x3Typtbo314ck0cOcVlxvgIRifY04FZt7Ti1bGtSUgv5Nk/jjJ/2wWKSrU179xEyc8v4etvd/PLggM8/GAPixXAmhAiKKiSopIyVDYK+nUMMrcpBiOXyfjuQo65zajgWrZmsKua59adI7fEcm6qd7bzo1ewK8+sPUeRRlfttoEuah7vFsQL6+PRSXr6hbrzUt/mvL/jIr8dvYpUw/pnlJcDrw8I48WN54mvac22gb3A61EpFUzsEsR7t7elW7gn7606wytLT3DgQlaNDwtNxQssLNQw/4e9/PDjPsbc0oZHH+mFh4f5G0XUFcsL3jYhUr1dLT4kam0Fxy18nXhn5Wn2NXPhmzGtzG1OBf3D3Gnj68ibWxPoH+rGsAjLqKPqFOhCgLOaZ9adY86gcJzVVd8SQt3tubdDAE+sPsvtbXzpEujMO0NasCcphyfXxNXYYcbNzoZ5wyN4fn08j3YNIsTCZzW2DHDm1XHRlGh0rDxyhcX7L+HuqGJC50CaW0k3FGNy5Uouy/4+jrZMx4RbY/H3t07P77+INUEzY4kiqNNJbNiXxJb9ydw1shWtQstvbNeXSVgqkiRxKbuYV385TN/mrhbT0/N6lp1KY29yLs/1DsHNAgrsATKLNLy08QJvDgzD3b56m0rKdGy6kM3e5Fy0kp4wdzsGh7tzOKWALQlZTI31o101JSIarcTMNXF8OjLy5jVFM3qBhpCZX8ri/ZdISC+kuZcDt3YKxMPJtlF5gfB/T1Cv13Pw0CU2bzmHj7cTY8e0wdlZbV7j6oBIjLFgzCWCSVfzWLg+jhKNjqzcYlydbFEo5EiSHknS07djIH3aB95wk7IGEbyGRquj/fNrOfFYN3ObUimZRRrmbEtkWIQnA8Is48afW6Jl1oZ4XurbHN9ajCs6n1nEuvhMUvI16CSJpNxSXNVKnuoRTHP3yr29ubsuMqG1D0Gu191QLVwA/8uFtAIW779EVoGG1l2CGdotBLUFZkbWllRvV0o1WlavPsXZuHQ6tA+kf78WKAxNarJAhAhaMA0pgnq9nu2HLrNxXxL+Xg5MGhKFvVqJQi4jNasIfwNCPNYihFqtRJfZ6zj4SBdzm1Iler2e345e5UJ2Mc/2CjF72zGAQo2OF9bH82T3ZlUKWE1czC7mj+NX2RCfhUohJ8bXkba+TrT0dsBRpSAlv5TlZzJ4f2iLG3e0MhG8hl6vZ3sprN2diFYn0a9jED3aWnYmdVWkZhby9Y6LFBaWMmxYK1pG1bK0xUIRImjBNKQIzpy7jaHdQxjYuVmdL1BrEUGA7rPXsXN6B+QW3iYrMbuYD3dd5P6OgbTxNf9ak0YrMWtDPHe186+3PfGZRSw+kcr57GJkQLSPIy087OnX3A319aOPrFQA4caEGK1WYsvBZHYduYKdWsmoXqEVywmWzJGz6SzbEo8qwI2xY9vg4W69iS6VIUTQgmkoESwu1fL5n0d4+s76FZFbkwjOXXOWpbsSCXJR88v41igtwNOqCp2k55M9SagUch7qHGh2L0KS9Ly6+QJDIzzobqROQInZxSw/k05KvgZPextGRXkS4fnvzbaRiOD1FBRpWLkzgdMXsvByt2Ncv3CDoi0NxbXI0No9ibSN8GJ8/3Cy/C1fsOuCEEELpyGEsLhUy/s/H+Dl6fWbuWdNIghw6fgV5u1OwtdRxTO9QsxtTo0cvJzHj4evMKNLUKWDcBsSvV7P+zsvEu3tyPBI42azZhRqWHEmg7jMIhy8HBnaxpcOzWvf29TcGJoQk5pZyNIt8aRlFeHiaEvfDkHEtPA0y8OOJOlZvSuBXUev0LtdAEO6hSCXyxr1eDchghZOQ3mD6/YksvXgJUb2DKV9S2/s6riIb21CqLmQQZ/vD7LngU7mNsUgNFqJz/cmUybpeaxr0I1hQzOw8PhV9l3KY0xLL3oGuxpXqJq5U1BSxrrjqRxMzEIpl9MnyovekV7YWLDnfo26ZIXm5Jey7eAljp5LR6/XExrgQkwLL6JC3LE1UStCrVbi4Jk0dh65TE5+KUO7hdC9rd8Nf0shgpUgRLBhaMh1wVKNjm2HLnHkbDplOh2lpTpef6h7rY5hbSJIUhY9v9nPzvutQwSvcSGriE/2JHNLlBf9zZxBKkl6/j6Tzo7EHPqHujE8wgheTCUh0DKtxLYz6Ww7k4ZOr6dTc3eGtPGt96gtU2CMsgi9Xk9iSh4n4jM5k5hFaZkOmQyUCjkhfs6EB7ni7+WIg50NDmqlwRmapRodiVdy2X74MikZhSgUMtpH+dAz1h+nSjoqNWYBBCGCFo+5yiT0ej3dpy1k+bxb8HIzfOiotYmgJEmEPL6CpGd6mduUWqPX61l8Mo0Dl/N4umewceb01dOeLReyWRWXQXs/J26P8a3b/EQD1gAlSc+BhCzWHb9KkUZHmLcjLf2dae7lgK+L2qzrpqauCyzT6khMySc+KZsrGYUUFZdRWKKt6MyjR48M2Q3/rUePJIFMVj7ZJdjPmR5t/QnwrnkdsimLoOU9XglMzqZ9Sew+loJer+f2IREWnz1ZX+RyOUEWlJBQG2QyGROifRgc7sHb2xIYHO5h1rpCmUxG/zB3+oe5s/9SLs+uO0eXQBdube1tuCgZmAQjl8voHPb/kV0J6QXEpRSw/PBlruaUoKdcKO1UCtqHuNE1zKPeUyAsBRulghZBrrQIcjX5uRq7ANaEEMEmgiTpOXYug/2nyufBvXRf3evn8kO8rM4bVCqsK+Hiv7ioy5te/3okhbe3JvBMr2BszFy83CnQhU6BLuy6mMNTa+Po19ydUVGeJktuae7lWGm7sqJSLYcv5vD1lvNkFWroG+XNYBNOkG9M3WGaugCCaKBtETTED/FcUjYPzdlEZLAb08e2Mfn5LIkSjZb0/FKrTsO/xh2xftwa7c0Tq+NIyCo2tzkA9Ah2Zd7wSBxUCp5cHcfm81lVb2yCv4G9rZIeEZ48N7IlcybEoLZR8OLiE3yw+gw5hTVPuRA0bYQINhEiQ9x59YGuTXI0TPSsdbwypnX5PxqBEEZ4OjB3WATfHLhc60nxpmRAmDvzhkeQr9Hy5Oqz7E2+zrZm7g3y3cvlMvq18mbOxBgmdW3Gx+vP8dbyU6TllRjl+MILbHwIEWxC9GkfSPLVfJ6at52Dp1PrdSxruBlotDokSaJMp2fQ9ZPNG4EQ2irlvD0ojE3ns/j1SApf7E0m2wJm9clkMka39OaDoRHEZxbx1Jo4jsvMc5sJcLfnlbGteaBfGPO3JfDq0hMkphfW+XjW8JsX1B6RHWohNGSG6L6TV1m6OZ6JgyJoH+Vd5+NY4rqgRqvji43xLDlwCUmC3OIy1CoFB14bdPPGSdWE7ayIB/8+zfxDV/CyV3FXOz/uiPWllQEZgQ1Bmb8rP+5IID6tgOl9Qwn3cTKbLXnFZfy66yIXMwvxdLQlNtiV2GaueBk4FaExiWBT8wJFdqgV0JCzBb3c7FDIZdQ3f8HSEmR6v7kZnaRneFs/1j3dB/tqZuMB5R5hIxDCr0a3pEczV346nEJmURljfzvGoDB33hwYhqs5RzU1c8cGmN4vjGKNlm+3XiAtL5GH+ocR4G54SY6xcLaz4eGB4QDkFGo4lpzLb3uSSMkpIdjTnnv7NEelrLxYXQhg40WIYBNDkvS89s0/fPpsv0qLZq0ZNwcVQ2N8eWhAuOE7NRIhvLOdH619HPj9WCprpsYy/+AV0go15hPB/4Sc7VRKHhscQV5xGV9uiqdUK/HwgHA8azGyyZi4OqjoHeVF76hycTtzJY9n/zjGiFg/BkX73rCtEMDGjVgTbGI89dF2Hhwf0+gEECCzoJQ2gXWYdt0I1ggB2vs781DnAD7clcSj3YL+35y6IakhAcbZzobnRrbk4QHhfLEpnndXnibPAtYyo/ydmTclloISLU/9doSkjPK1w8YkgILKESLYhDibmMWBk1dxrGFyeG2wpJtEWl4pR5Jy+H7bhdrv3EiEMNTdnncHh/Pu9ovsb+jM0Vp8h55Otrw8pjVTugfzzsrTfL7xHKVlOhMaVzMymYyxHQN5Y3w0P+xI5OcEy8m8NQbCC6wcIYIWhKl/pL+vO8srD3QjKrhx3PD/y4Zne5NfXMbe81k8/OPB2h+gkQiho62SD4e1YFdSLu9tT6RUK5n2hPUofwh0t+ftCTH0b+nD7MXH+W33xYrWYObC3lbJK2NbY69W8spXe0jPLjKrPcZACGDVCBFsAuj1ep75eDsOdja0beFp9Ll6luINBns58sItrZjQKbC8OL4uNBIhlMlk7EjM5kp+KW9tTeDljec5cDmP6rLBa40Ra/9aBjjzwaRYmns5MPO3I6z9t62fucgP8WJItxAen9yOH5af4oNfDpCdb5xaw4ZGCGD1iMSYJoBMJmNItxBOns+oVaNsa2XqN/tY9VQ9mmVfu7FbccLMhN+P0dbPiZf7hQJQqpVYcSadxSdS8XFUMbqlF83d7Ore4sxEDwvdWnjSNdyD1UdTeHLBEaZ0D6ZTaMM+mFz/UOfurObZuzqSmlnIh78cZHDXYHq3D2xQewSmRdQJWiCmKpV4e/4+7rmlNb4mSpiwlHKJXXHpPLHgCPsrqw2sC1YmhpP/PE6Ehz2vDgir9P2U/FLWxGWQkF3u2biolXQNdKFDgBN2Nc0ubEBPWSdJ/LYniWNJuUzvG0qEn+lrDKuLauj1en5edRobpZzJQ6NMbosxEF5gOWKUkpVhLBHUaiU+XHCQiyl5+Ho40NzfmTuGtzRZg2NLEUGAO776h4mdg7ilfYBxDmglQvje9gTOZRbz7dhWBu+TU1zG3kt5HLicR4lWQgZEeTnQOdCZMHc7ZMEepjPYAEo0Or7bdoGruSU8MjAcP1c7k5zH0LD+7+vOolYpGNuvFqU4ZkAI4P8RImhl1FcEUzMLyc4vZe3uRBRyGY/e3s44hhmApQhhTqGGPm9vQa+HA68PrLIIutZYsBgeScnngb9Ps/fBzvU6jiTpOZtRxL5iHefTCtDr9djaKGgX7ErnUHeDO6wYm9wiDV9sOo9er+eRgeG4GLHMp7br2vP/PkGgjxODuwZXvLZi+wWOxKVXzFfUc+O9Va+H6DAP+nQIxM3JtN+hEMAbESJohdRGCAuLy/hhxUkSr+ThoLbB3cUWZwdbRvZqbpY1QEsRwqTMQnq/uYUNz/ahhbFDaRYmhpIk0eGLfay7uz3ejvUQhyrCnSUaHUeScth7PpOMf5OO3B1VdAnzoEuYu8nGFlVGSk4xX2yMx9tZzfS+oahV9XvAqWti1we/HGBw12BiWpTvP/vzXbz1SI8qt5ckPcfjM9h6MJmMnBLuHtWKsEDXOp27OoQA3oxom9ZI0ZTpeO2bf7C3UzJlaEsc7JS4OamNnv1prQS62eHnqmbvhUzji+D1YmEBgvjE6jjuaudXdwGsYa1PrVLQNdyDruH/D41m5peyJz6T2YtO4OGo4o4ewSYLVV6Pn6sdb9zahriUfF5eeoKW/s7c2SMYZR3mK9Yns3nmlA7M/mIXHi52BHg74uthT3xyDuFVDMKVy2W0jfCibYQXhcVlLNoYx+/rziKX/d9z1OshPMiVcf3CUdW0PlsJQgBrj/AELRRDPcGZc7cxuFsw/ToEYVvPJ2JjYineoFYrEfHcGhY82IVuLTxNf0IzCWLvbw+wfXqlD7qVY+QEl7S8En7emUh+iZYnh0Q06IT3Q4nZLNh9ke4tPBnXMcCgNW9jlfUUl2qZ9fku3pnRE4CXvtzNu4/1rNe6+9G4dJZticfF0ZYx/cJo7m9YFyQhgFUjwqFWSk1CqNeXh1c++eMI3WL8uHd0dMMYZgCWIoIAF9MLuOWjXRx9a0jDnrgBBbHPdwfYdl81IthAWZ1peSV8tC6OFj5O3NUzBLncNElYlbH9TDpLD1xiRKwfA1v7VClExq5rTbiSy7LN8cy8owNbDiRTVFzGiF6h9T5uZm4Jf2+NJzk1H0d7FX3aB9I+yrvS71QIYPWIcGgjY/m286zcmUCAlwMeLna8eG8XQvydzW3WDVjShAkfFzUanURekQbnhuyZWpnwmEgYb2iyYsaCf29nNW9PiOHAhSye/O0It3UJontDeOBA7ygvekV6supIeY3hpG7N6BJ2Y2arKRo7XPPU0rOL6NcxiOc/3cmwHs3r/QDg4aLmnn8fbPOLNGw/eIm35u9Dr9fTq10AvdsFoFDIhQDWE+EJWjBVeYLr/7lIdl4JnVr7EhpQh4bRDYilCOHmk6l8vimeJY9Vnbhgzby85ARyGbw6znKiAXq9nt/3JHE0OYdHB7UgsAHHJ+kkiYX/JHPoYjbTejWndaCLSTsbJV3NY+PeJO4ZHc3KHRfw9XCgYyufmnesAzqdxPbDl9l+6BJad0cGD4wkIqLuc0GbAtV5giKDwoKp6gmvX8dAzl/KtXgBBMtpqda/tQ8arcTH6+LMbYpJeH18NCsOXyGnUGNuUyqQyWRM7h7MS6Nb8cuui3yw+gzFGm2DnFshlzO5ezBvT2jDzrgMZq6N52JKnsnOF+DlSFp2MQBtwj05nZBpsnMpFHL6dQziwReHMe2uLpw6ncr7H27mx5/3kZ5eYLLzNlZEONQKScsqxt/LDGNyrJi98Zmk55eSWWA5ImFsPpwcy6D3trHlhb44qs04TPc/OKpteGFUSxLSC3hpyQm6hRuewFJfSsN9mRzuW1FGlFtQyvQxbfA2sleqUMjRSeWNyoN8nEhKzTfq8f/LtQdkBwcVY0a3AeBqah4rV50kPaOQllE+DBwQgZ05hypbCcITtHAq8wZlsvJFc2vBErzBpQcvMb5jIK+Pt5xwobHp29KbdyfG0P31zZy8bHljgJp7OfLBpFjcHGx4csERjiXlmPR81//uHOxsmDExlocntGX+8pN8//cJo0+r0OnKj2fqZKCqIkS+Ps5Mu7sLzzzVj7AwD777fg8fzt3Cnn8SzT6Zw5IRnqAV4u/lyPH4DJ6atx0XRxXFpVreerhHg2bi1RZzJspEPLOaIHc7VjxZj6baVkL/1j6sf7Y3Ez/bg7O9DV/d3aFB1+IMoX8rH3pHejF/ewKL9iXz+JAIo06Yr+6hy81JzfN3d+LI2XSe/WQH08dEExlinEQiF0cVmbkleLiokWGaa9GQJBiZTEarlr60aumLViuxe08Cc+dtRW2nZED/CKIivRvEC7cWRGKMFVBTqcTr3/5Dc39n7hxheL9Ic2EOIQx9ahUzBoYzc1hkg5/bnOyNz+SZhUdRKeXMndSWmGZu5jbpJrIKSvl4/Tl8XdTc1ycUm3o2eqhN1KFMq+PrpceRdHoemhCDTT1b68VdzGb/qVSmDIvirfl7mX1Pl3od73qMkQFaWKhh85ZznDmbiqODLQMHRtAi3PxRmoZAJMZYOTVdAMWlWsb0C0ev13Phci4rd1ww6yy26jBHaHTBg13YcTad/nO2UFTSMIkZDc2n688R/cJaJn+xh0tZ5UNgm3s7cH/fUC5nFfPcwmN0eXUDs/48ZlHfgbujLa+Ni6ZXpBfP/HGUjSdS63Sc/BCvWv+2bJQKZkyMZWj3EJ7/dBeJV+qXOBMR7MYFE4ShjVUC4eCgYtTI1jzzVH+mTO7A8eMpvP/hZr75bg8XL5q/65G5EOHQRsDoPmHM//sE+UVlhPg5c/ZiNt3a+OHRAC2s6kJDh0a7tfBk2RM92XTyKu1fXs/wWH/mTo5tsPObmiMXs/l5VyLH3hrM1tPp3PX1Xkq1EnnFWrqEufPOxBhGdwhAkiS+3nKBQe9tw0Yh49HBLRjfKcjc5gMQHejCvCmx/H3oCjMXHOGRgeGE+TgatG99H6wigt2YM6MHb32/jzH9wmgXWfdyA2O3UDVVDaCzs5pxY2MAyM4uYv2Gs/y5+AieHg4MHhRFgBVknhsLEQ61IgxtpTZvwSEeGN8GewvKEKwMc4RGNVodfd7awq6X+iNvwKbPpqKoREuX1zay6YW+eF833SGnUENiRiGxwZWHQNPySnhlyUkOXcwm2NOeT+5oh6+FPDSVaHR8sSme4jIdjw1qgVMVGY7Gjiro9XrmLjhEh5be9O1Qt4eDa2HQt+fvY9Y99ZvmYY4i+IyMAtZtOMuVK7n4eDsxaGAkvr5OVr+GKDrGNDGKSsssXgDBPMkyL/x5nKxCDacu5xFdRaNja2LkvB3MnRx7gwACuDqoiK2mf6e3s5ovp3UAYPuZNG75aCc9I7z44PYYsz8cqFUKZg6L5Ep2MW+vOE2rAGemdAuuSPwyVUhdJpPx1B0deOWrPXRo6YNTQ3YXug5zdoDx9HRkyqTy38XV1Dw2bzlHelp57aEecHZSEx7uSVioJ35+zhadjGcoQgStiFRvV4O8QXdnNXuOXaFbjL/pjaonDS2Eu89lcPa94Q12PlPy1G9H6BrmwaA2vvU6Tu8ob/a9Ooj3V52hxxub2Ta7n/HmL9YDfzc75kyM4Z/4TJ5YcJgx49vSqVX9Pqsh3D+uDd8tO8GTU9rXet9rgTWFQoZWK9V6oosltUDz9XFm8u0dbngtN7eY8+cz2b0ngStXcismJqptlYSGehAW5kmzIDds6jABw1wIEWyE3Ds6mje/22sVIggNK4RuDir2X8ikU6h5p6XXF0mSWLD7Ikse6260Yz4zIopAdzvu+nofvz/SzWjHrS9dwz1o2T+SP9afZcW2Czw0oS1+nqZrFhHg7YhOkriaUYhvHc8T4OXIpbSCWvX0tSQBrAoXFzvatw+kffvAG14vKtKQkJDJiZNXWb3mNDpdeeMAhUJOsyBXmjVzp1kzV9zd7C0utCpE0MowxBu0Ucop+/dHaC1cC3GZWgx/vL8zwz/cwYHXBpn0PKZGLpdz7O0hDJizlQ3P9THaet6kbsF8vP6cUY5lDK79LuTA5KFR5Bdp+GrxMexsldw3Jhq1rWluYdPHtuHj3w/z8vSuddq/X8cgFqw5w7N31TzeyhrErybs7VW0bu1H69Z+N7xeVqYjOTmHpORsVq26QnZ2UYX3KJfJ8PFxolkzN5oFueHr64SiDjMh64sQwUZIfHIONmb4MRkDU3uF3s5q0MOjPx/i06m1D3dZEpKkRw9kF2qMmtTS3NOBAxcy6Wgmb7m6NT8nexXPTO3I+Us5vP7tP3Rv68+Ins2N7l24ONoS4O3I6YRMWjY3/Hu4ZkaAtyMB3g5sP3SJ3v/xmq6nMQhgddjYKAgN9SC0kt+SJOlJTc0nKSmb3XsSuHo174bONtf/Ta8lcFb1d5bJZTjYq3ByssXR0RYnJ1ucndU4/fvf1SFE0AqpzhtMTs3nqyXHeXm68Qp1GxpTC6GHo4pVR1N4IbsIf7eG6aZyIjmH++YfoFeEF1H+Tmi0Et7OtozvFIQkSTy/8Dj/nM9ELisfi+Rsb8PKmdV3uIlPLaBzmDstjZzO3q+VN6uOXm1wEaxNwktYoCtvz+jJ5v3JPPfJTu4c0ZI24cYd2TR1REte+nIPc2b0MFhkbW0UlJRqUdsqmTw0ije+20uQr9NNg3Ebu/gZglwuw8/PGT8/Z7p0Ca7zcfR6PZKkp6hIQ35+Kfn5peTll5CRUUhCYhb5edW3mBQi2Mj4YflJ3n6kh0VNma8LpgqPnr6cS/sQNzLySxtMAAHeW3WGl0e34kBiNpezi1Ep5Xyz5QKfbYinpEzHyFh/tr/Yv2L7Pm9tRpKkajM1PRxV5Bcbv/DdSa0ksUxn9ONWRX2yPft3CqJ3uwB+XXOaZVvieXB8jNGaY9soFQzvEcLCDXHcPtiwbkOhAS4kXMmlZXMPZDIZz9/diRc+28WrD3StyDYVAmhcZDIZCoUMJyc1Tk7qSrd57Y11Ve4vRNBKqcobbNHMjZMXMmkf1TjmixnbK7znu/3c3y+UXhEN20j7gf5hfLo+nj9m/D/h5OH+YWi0Ep7ON1+4xRod/eZsrcg2lMlABrRt5srHd5aHcb2cbCkwQfcXnaRH0QCp78YqdVAq5dw9qjU5+aV8vfQYDnY23DfaOOuFvdsH8ukfh1mw5gy3D46occ0qLNCV+OTcihCqykbBrGmdePXrf3ho1uAqb9IC8yFE0IqpTAj9PO3JyS81j0Emwlhe4Q/bLxDh68S03qHGMKtWrD12ldT/hGWqm3Jvp1KwbXb/m15vPnMlp67kIf83PKczwXQAnaQ3WQafKdvmuTrZ8txdnTh/KYc3vttLx1Y+jOkbVu/P8ujt7Th0Jo3ZX+wmyMeJmBaetGzuTk5+KUlX84lp4Ynnv2uyYYEubDmQfMP+2gg/7n9uEB/O28pjj/bGvQEjEIKaESLYyOjc2pf3fz5A/+vaYS3aGMe5pBxemNbJ4tKTa0N9xLCgpIyP18dz4NWBxjbLILaeSWPHiwPqfZwgdzuWP9ETraRHJ+mxtzV+2FvSG98TbMiesWGBrrz1SA92HL7Mc5/sZMqwKNpG1O/87aO8aR/lTWZuCSfiM1i0MQ5XJzXNfJz4ccVJNGUSnVr7UFYm3VC+cS306epqx9Mz+/Hh3C3cf393/HwNL50QmBYhglbOf71Be7XNDUL308pTeLio6dcxkJ9WnuLuUa3NYKVxqYsYPvrLYV4a3bLWxcvGQqvT17jGB5BXpKH/O9uwrcJOuUyGnYnKAq6hk8AYycXmniPZq10A3WP8+HXNGf7edp5HJrStdz9dDxc1fToE0qfD/zM+e8T6U1Ck4cT5TK6kFzBxUESl636OjrY8/9xAvvx6FwH+Lowf17ZRdFyxdoQINgL+K4QFRWX8tvYMhcVlbNybxG9vDUOhkLPlwCUyc4ottrF2bTFEDItKtDzx2xEupBXc1Cxao9WRVaBB0ut59JfDFJZqWftMH6PaOHvRMbadSSfIw96gdmT2KiVOaiVbZvWr9P0ynb5OnUhqg0ohp1hTt8QYcwvff1Eo5Nw1shXZ+SV8+scR2kd5M7KX8cPhjvYqurbxI9XblbRqtrO1VfLEY304cSKFN99ez7gxMURH+1Wzh8DUWGcxmaBa3ny4O12ifRndJ4w/5gyvWMyfPDSKuQsOmdk641PdGJ095zM4m5J30/raumNX6fTKRga/t52Jn+3h6WGRZBeWGd22i5lFfDQllj9nGNbZRamUI1XT1H5krB9z18YZy7xKGd7Wlz3xmQZvf+37tzQBvB43JzUvT+9KmVZi7q8HKzqaGItUb9daZX1GR/vx4qzBbNocx8FDyTXvIDAZQgQbCddfgCobBWGBrni739iiyM5WQXZ+icXOGqwvld2IB7T2RaOVmPR5+Zy9ls+voetrGxn/6S7eGB/NsbeHsPOlAWw9ncb4jlUXNUN5qzKt1rCb58M/HqTXm5u4lFlEs1q03pIkCU0153hmeBRLDly64bWsAuMmQnk6q9FopYq5hP/letGzZOGrjLH9whnSLYRXv/nnhsLsulJb8bseuVzGY4/25tKlHD6cu4WMjIJ62yOoPSIc2oioqaWaj4cDQ7uFsP6fiwzpFtJgdjU019+YnRLTaeZhz65zGdz22R46hbjx4/2dKSjRVmRnXsoq4oM1cRx4rfKkmSMXs5nx8yFkMlDIZKTml3JXzxCeH9my0u0lSeJoUg67Xq59IsynG+IZUk1DbKVSToCbHdO+3ce5q/kAJGYUceytwbg7Vt8ZozZ8NCWWB388yMqZvaxO6GqidZgHk4ZE8sZ3//DSfV3rtC5nrFo/mUzG6FvakJdXwqLFR8jNK0EhlxEd7Uerlr6kpOSxfuNZ7NTlt+rrZdtObYO/vwsB/i4EBLjg5eUo1hjrgBBBC6WwUMPDMxbRsqUvzz7d32g/bpVKwb6TqfTrGITKijq914WsvBLe3Hie01klnPzrHi7tiifSzwm5XH5DeYK/q5p5k2MZ8/Eu/F3tuL1rEHnFWrydbdlyOo0dcRlseLZ3RXH9wz8e5M+9yTiolDw6uMVN5y0o0ZJdpKHjKxv46/EeBBpYvJ2WV8L32xI48Hr1Gaxf3NWeNcdS+P7ejsjlcn7akcCcFWd4f1LbWnw7VZMf4kVkiBdpf54g1deFxpjQ3yrUg7H9wnn7h33MvqezwVnTphxye+895X1Ky8p0nDx1la3b4vH2dmTmE31RVdL8oqhIw5WUPK5cyWXTljgy0gtvaC+mkyT8fJ3p2iWE4GA3q84MNyViqK6FMnfeFibd3oGc3GKWLjvGo4/0wrmSourKqKnB9rmkbD5beISBXYIZZYaauYai1YSfeObOjtw5vPKs0MoSak5ezmXOitO08HHi9OU8pvYMZt3xqxUF6teQJIkWz6zh3PvDACpNehkwZwt/P9kTRwNnOx64kMk7K8+yuBaTIa5kFzH6o108OrAFU3uFGLzf9VTl6f244iTnk3N44+EedTquNXDwdCob9ibx3F0dqxUJa+3ycvlyLv/sTeRiUjbo9TRr5k7XLsEEBrqa27QGRQzVtTKysotwdrar6Kt3z7QuLP3rGHdPvXFSdXFxGd9+twe9Xk9ubglOzrZMv7cb1BAWbdHMjTcf6cF3y05wOa2AAG9HE38i8xDk7cQvq0/z3V8n2DX/tpve/+/N3ykxndYBLvz64I2TA4bH3jySSi6X8/CAMNrOXo+7o6rSwnaNTjJYAAE6hnpwJafY4O0lSWL4hztZ8FAXWhvYP7Q2oc2pI1oy+JGlBm9vjXRo6YNWKzF3wSFmTml/kxBaq/hdIyCgvBQDyntsJiVls2t3Apev5IJeT2ioJ126BDfpukUhghbIps1xDBwQUfFvP19nMjMKb9imoKCUD+Zu4eEHe+Dt7VSx3y+/HmD48FbsT8tnRJBTpU+3er2eg6dTSbqaZ/U9Rqtj3efj0Gol7n1jA3tPpNClhlT0ygSiuvKLp4ZHsfJICt9Mq3xcjrOdDScv5xosUAA2CsNDVisOp9A1zP2m4xtrDU8ul2NjAcN1TU2XNn6UaHT8vOo0d41sBVi/+FWGTCYjONid4GB3oPw+cCEhk81bzpGZUXhTwpxMJkMmA0cnNW6udri4qHF1tcfVRY2rqx3OzmoUCjl6vZ6SEi35+SUUFGgoKCxvYl1Q8O////tv6bqMXEmvp1VLX7p3CzF7KzkhghbIxcRsJoyPveE1dw8HMjIK8PR0pKxMx9x5W3l0Ri883P+feTigfwStWvqyeUscTk5qZm6KY3SMD51b+6JWKSvWFc8l5bD7aApvPNQdx2padzUGlEo5s+7pxOiZyzmz5O5a71+doJzaeAaFXEYLP6dK35/WqznfbbnAvDvaGXy+mtqg3ZD0U6gj/2yGSRNXqivXaEz06RDI3rXn2JhaRJs21jGMur7IZDLCQj0JC616+oYk6cnPLyEnt4ScnCJyc0tISs4mJ7uYvPwSJJ2ETCZDbWeDo6MKRwfbinFGzZq54eRY/t+OjrY3LElIkp6TJ1P4feFhCvJLcHC0pVvXEKJb+zV4co8QQQvEzt6GdevPMGRwVMVrgwZE8OnnO+jVM5RduxK4+67ONwjgNfz8nJkyudwzGTIkip9/2c/8vzcRGeKGr4cD+YUalm+7wF9zb2n0AniNyGB3vNzsWLH9PKN6hxntuF4dmmG76TxhL6zj8UntmHbLjd14bNKLyU/O45SdGjcnW4O+b0cPB5ZeLWJQ15pHy7Ro5sq+k1eZ9tp6vp090OgF9HkFGvQm6E1qaVzz+qbe2ZG339lIUJAbro2koUR9kctluLjY4eJiR3AzN6Met00b/4oHjvyCUv75J5FNm+OQdHpCQtzp1TO0IsplSkRijAWyZu1p3Fzt6No15IbXi4o0/Pb7ITRlWh5+sKfBx9PpJBRxKej1oLZVcvusVaz9dJyRrbZsEq/kMuChJcy+pzOf/3kUT1c71LYKurbxY0zfsFoNTv0vD7y1kTOJWXi42rH0/VEVr+88cpn3fjrA1cxC7NVKVn8yBnt19UKYk1/CmKeW89qD3elTzTDW61m0MY6Pfz/MondH4OdpvPXd4Y8t48V7u9C9beP0jCoLeebllfDJZ9uZ9fwgUW5gJvR6PYmJWezcdYH09AJsVEo6tA+kQ4cgbFV189uqS4wRImgB5OQUc+jwJS4mZZObW4y9vYr77+tW8461xCcth6y8EiY8u5JubfyQK2QM6NzM4JuttZOcms/8v04wvGdzOrX2JT27iBXbL/DdXydQ2cixtVGCDD58ohfR4bUPMfZ/cDE+7va882hPgv2cWbIpjpe+2sO+nyax51gKb3y3lw4tvXntge44O1YthgVFGgY+vIS1n47F1cD1krMXs7j39Q3s/P7mBKC68M6P+8nJK+Gdx6of7GttGLLWd/JkCvsOJDPtrs41biswPaUaLQcPJnPwYDJlZTq8vBzp2SOUkBB3g8s+hAhaIBqNjudnrSAk2B1HR1vatw+keYg7Li6mDcNs/XUfH/56AAc7Gzq09Obg6TRah3rw2XM3Zzc2FQqKNAyZsQwHtZJL6QV8NLMPg+vYTGDh+jhWbD/P4G7B/LLqNKs+Go3quqfXhevjmP/3CUIDXfjyhaqL6feeSOHpj7az4fPxBs/FG/TwEjZ8Mb5Odl/PL6tOs3DDWVZ+NKbex7IE6pLksmjJEZoFutVr4rnANKSm5rNz1wUuXsxCrpBz67i2NZZ8CBG0QC5ezOLQ4UuMHRPT4OdWxKVQptVVhM6e/HArfp4OPHtXJ6OdIzk1n/jkHORyGZ1aedcYBjQnBUUaxj29gvVfjDdo0kN1aLUSL3y+k7wCDV++0L/KY814dzNRIW7MuK3qpJnN+5N46cs9/D33lop5ddVxz+vruXVAC4b3aF5n++f9doj1ey6y6uPR9foeLIH6ZHjq9Xre/3ALd0/t1CDrUoK6UVJSxs+/HkCpkDNlSocqw6VCBC2QnbsuYGurpFPHZmY5//V1hFqtxIgn/mLdZ4avE+bkl5CRU8K7P+5n5h3tK9bU/jl+hde+2UvS1TwGdglGp9NzJjETXw8HXrm/K8UlWmL+ne2WlVeCu4ENAEzNgAcXc/eo1gzrEVIhODn5JUh6TGKjJEkMeHAJnz/fn1ahVa9HHj6TyoNzNjNnRg/6d6r+t3ItjPrL60NpUcskhpz8Eqa8uJaWzd344AnjTtJoSIxZ2lBUpOH9DzYze9Zgs43gEhjGxYtZfLXkBN0HtaRjn4ib3u/t/bQQQUtj4Z+H6d07zKxFqtcLYeepvzHjtlh6twsgxL/6urbEK7nc9sJqJEmPrUqBna2SDV+MZ8X287zx3V6+fGEAHVr63LDP+j2J/LDiFJfTCrC3U3LuYg4OdjYVA0g1Wh1bvp5g9M9oKDn5Jbzzw36WbImnf8cgvN3sWLEjAR8Pe5r5OPHtS4OMfs6UjALGPb2SHd9NrPYmW1Siof+DS1j07kiCfKr3SlIyChjz1Ar+fGcEwX6G/bZWbD/P2/P3M++p3nS1wvIAU9b0XbiQydr1p2uViCYwDinutXuQ0+v1bFt5nFMHLxLbPYywVn54B7iSdjmHCe2FJ2hxfPbFDh6Y3h0bM/fvvCaEz3y8nR2HLyOXycgr1DCgczOev7sj2XmlfPz7YW4fEkl0mAdPfriNxJQ8Zt3Tmb4dAlAplQyesRSVjZyiYi2zpnViaDXhuIIiDeOfXcnALs145s7//yaf+Xg7ZxOzmf/KYNydbSnRaM0SQs3JL+H8pVySU/PxcFET4u/CI+9sZvm80SY534RnV/DsXZ3o1LrqptkAk2at5qX7ulTrNV7jYkoek2atZuf3E6sNaWq1EtPf2khxaRk/vzrkhrVLS6chi9nXrD2NSqVgQP+bPQxB3amtyBlKaUkZ509e4cLpq6ReykahlDP/vfWibZqlIen0ZhdA+P/kifcf713x2oXLuXy77DgTnluFJOl57YFuzJy7jaISLd+/PIiesQE3HGPhnOE42CkNEq07X17Li/d2ple7GzNS33+8NwdPpzLhuZUo5DKUSnnF8Nj7x7ZhXP+bG1WbAlcnNR1aqis82YfmbOLR22JNdr7s/FKSU/NrFMHiUi3pBrZUC/ZzpnWoB899uvOGv+v1/LH+LJ/8fpgZt8UyeWhUpdtYGubq4jJsaEs++XQ7LVp40SzINDfuxoypxK4qbNU2tOoQTKsO/09qmv/e+iq3FyJoJixppt+1m8s1rzA0wIU5M24M/2yI8ubAyas3CSCAl1vNcwYkSWLBmrNk5BTfJIDX6NDS56aQaM97F94UWm1Izl7MNqhwva50au1r0G+hsLiMI2fTDC5nycwr4c2H/9+Iu6hEwx/r4li+/QJ5hRraR3mx/vNxFt0wwZJalz34QA/mvLOB558biK2B2bpNjYYWO2Mh/ppm4JFHF3PgYDIurnY3NcU2J9XNI/R0tas2zFkTj72/Dbkc/p5bu7CiQi4jLavI4PWt+jLj3S3sOnqZqSNbcelqPpHBpruws/JK2Lw/mTcerHlqxNezB/L0R9t5fNLN0yy+//sE6/dcJK+wDJkcZMjIzivhjpfWolSUh0Plchk9Y/35etYAfDwMH/Lb0FiS8F2PSqVg+n3d+PzLncx8oq+5zTE71ip4lSFE0Ax8/umtpFzN49cFB8xtyk381ys0FmcSM1n/+bhap90veX8U09/cQHSoh9FG+tzx4hpOJ2Qx+97ON4RZj8Wlk5iSy675Exn3zEq6RPvxyv3Gb1pwje2HLpFfqKk2KUaSypsOhwa4kJSSR/dpf+BgVz6ZwsfDgYTLuQzrEcLcp/rWmDRjiViq6FWGv78LHTsE8feKE4weFW1uc24gJSWPg4fKi8mdndX4+jrTqqWPUWYINibBqwwhgmbCz9fZoofa1jSlvrbIZDKGP/4XZWUSvdsF8MoDhomLp6sdyz64hUEPL6m3DTuPXObN7/dy5Gw67SK9Wb79AsO6hzDyib+RySCvUMOyD27BXq0yaVu5Y3HpPDl3GyH+zuz+4cYOLzsOX2Ly7DW0jfDCyV7F1YxClEo5Op1Eq1APvpk9ELWtkqzcYoY99hd7frjN6ur5rEn4/kvvXmF8890e4uLSiIjwNrc5aDQ6XnltDW3a+NGxfRBqOxvy80pISspm7drTyBUyOrQPokuXYINajjV2wasMIYJm4ouvdhJSj36VDYExvcLrO5lEjvuBjfuT2PbNBINv4G5Otmzen1RjrVxlaLUST320nWVb4vn7w1G0i/IhPjmHz/88QuzkX7ltUCTtW3rTsrm7SWcr5uSX8ODbmygq0fLz60MrPVevdoGEBpR3k8nILqJdVOXroflFZTQPcLYKAbRm0auMe6d14a23NzDzyb44Otqa1ZbNW85x28R2xLa9ca2+dWs/hg1tiVYrcejwJb75ZjelpTpatPCkf/8InP61uymK3n+x/CuokdKrRyhXLueWT3y2cFK9XY16I9v/8xT6tg/k51WnDd7nx9cGM+vzXWTUYujsNX5edQq5DHbNv42nP9rBgjWnCQ9yZd5TfZkzoyeJKXmM6RtO5L9z1ozNoo1xdL37dybPXsNDE9qyfN7oasV20pAoFqw5U6UAAgR4OXLxSn6dvg9Tc+33YuzfjaWgUMh55JGefPb5DrMnuOXlFePtVfVvSamU07lTMx6d0ZvJb47Fs0sLvlp2klc+383OFMv77ZgDUSdoRhYtOcKyZcf57dc7zW1KrTCGZ1hQpGHUk3/zxKT2jO5r2HijI3HpPPvRdvSAvVpJoLcjk4ZG3ZSxqtVKJKXmc/J8Bj+vPMWVjCKWvj8SHw8HtFqJgQ8vZus3Eyu2n/jcSqaPbWOSLNCSUi19H1jEzu9uM7jrSGpmIQ+9s/mGiRSVcSwunelvbeSTZ/rWODDYVDRGkTOUg4eSiYtLZ9Lt7Wve2EQcOJhMcXEZvXqG3vB6TR6eXq/n05eWc/dTg3CuJrtbr9dzJTGTcycuA+WDluUKOfaOtoS18sOlknFulkh1HWNEONRMSJKeo0cu8+vPd5jblFpjjDCpo72KVR+PZvwzqwwWwdgIL9b/G1bNyS/heHwGv6w6zWvf/INcLiM61IOTCZnodHo8Xe3w93Tg/Sd639ABJzElj7xCzQ3H/fG1wfR/cAntorwN6tFZHUs3n+OnladY9M4IHn1/K0fPpRMW4FKrtls+Hg4UFpfVuF1MhBfrPhvLrc+uZPLQKO4ZbfpkjaYsev+lQ/sgTp9O5cjRyzeFIxuK0FAPVq48SfgtHWq1n0wmY9Ijfdm49DDj7q084ezkgYtsXHaY8Nb+RMYEIpPLkHQSkqSnML+EdYsOkp9dhEwmw8XDgQFj2+FqwZnHVSFE0EycP59Bs2B3q55Zdv0NsS6CuGlfMmrbuiUHuTqp6dUusKLmUKPRsmFvEq892K3K2reSUi0DHlrMx0/3veF1e7WKr2YNZOLzqygo0rD2s3F17hcql8vIyiuhy91/MGNiLE9Mbsdr3/7DQ3M2cfhsGlu/nlDpVIiMnGIOnLxacYySUq1B53N1UrP+83GMenI5alulUQvfheDVzJTJHZjzzkaCm7nhZkC9rDG4wctzd+N83hHq0tTP09eZnIyCSt87cySZ/VvP8tibo6vMMG3fM7ziv9Ou5LBqwV7ycopo1T6YiJgAfIPcjJKdamqECJoJX18nrOD3YTB18Q5H9GzOvN8OG+X8KpWSEb1Cq91GqZDj5WrHjHe3MKZv+A3vxUZ4sfmrW9lx+BJ3vrQWe1sFC94cRl5RWZXeoSRJnIjP5FxyNj+sOEWZVkKpkPPl8/0r5hFqtRJ6Sc/AzkHYqhTsOHy50rDrwvVn+XNDHJ1a+6CX4I7hhouZXC5nxbxb6Hv/Yrq28SM0oPrer/9FiF3dkclkPDqjFx99sp3ZL5hmEG9NoU0vPxcuXcggMNSzVsetTqC2/H2UB18eYbCIefu7MuWx/uh0EvEnrnBwxzlSk/+f7+Af4kF0pxCCwmo/p9PUCBE0E05OavLzS81thtGprXeYk19CenaRQV1n6otSKcfLzb7awbPXvMsvFx1l9FMrsFUpKP7XK1Mq5Ph42KPXl4ezzyVl4+FiR1RzN354ZXCln0GplLPwnZEANPN15sNfD94kgntPpLB40zkkvb7OExzkcjnfvjSQR9/bwqqPx1S5nRA84+PkpObW8W354ce93HtP13odqy7ZmiOndOGrN1bx6Ju31CpbuKRIg+rfmtPrSbuSg5e/S528OIVCTmTbQCLb/r+zkSRJXE3KZvkv/zBiSmeCQi1LCIUImhGZrPxmas0h0er47w33v6Iol8v59sVBPPj2JpbUkARiDO56ZR2+ng4GDal9aEJbHprQ9obXCoo0XLiUi1IpRyYDW5WyVl5Xp9a+5BZo2Lw/iePnM9hzNIWMnGK83e357a1hTH9zIxdT8urcHScy2B3dv8X1QuwalpZRPpw5k8qu3Qn06G54ZyVjlCjY2tkwYnJnFn+zk4kPVt4rtjLSU3Lx9rv597tp2RGGTqzdGmN1yOVy/EM8uPe5Ifz4wQamzxpmtGMbAyGCZiQs1JPzFzJoEW5ZT0amojJRvJpRiKKBHgLik3NY9XHdp0E42qsqZiHWlQBvB9776QCjeofy5sM9CA9yrXjvtQe6MfvzXfz6pmE3icqErgi5EEAzMXZMDB98uIWwMA98fW5+kDFlTV54tD8JZ6+ydcUx+o4ybFB32pUcvANcb3q9ML8ENy/jdx+yUSmRWeADv6gTNCPt2gVy5Mhlc5thNlK9XQntF0VSTgm/HL1q8pu3Vifh7GC+htF3v7oOrU7P2s/G8cjE2BsEEMobiKdn/79267/1djXV3505k4qTs3mLt5s6Mx7pyddf7ybZyZkUd7cb/mdqBo1vT1ZaPge3nzNo+7TLOXhV4gmaUqbs7FUUFVjWMpDwBM1IYIALly7nmNsMs+Lubs+ihXczasx3DB4UVaUQGqM20d1ZbdYOK3eNbMUf685WK/ZaW2WdHgYkSeL5WSv4+suq1zsFpuN6kRv22EAWfLKZu54y/iDmmhh3bw9+nrcRRxe7G9blKiPjah6e/xHBwvwS7J3qlhltCCq1DTqtzmTHrwtCBM2INaQPNwQlJVo0Gi07d12gZ4/KMzxTvV2RJIlDhy4RGxtYY92dsRuAV2VTbfDtqmLvZ7uq3UYn6bn/wYW0jPLhyVpMK3j19bWMGRODjxU20bY2avLqgkK9aB7ly/ZVx+k9ok0DWfV/7nxiAN+8tQZ7R9tqszGLCkqxVd+YGKO2V1FarKlij/qjKSlDZXtzMo45ESJoZmxsFJRqtAY1t22sODurmfv+GD6ct4XzFzK5685OlW73wuxVpGcUkJZWwG+/3IlzNbV8lQlUmapuXlZ9SU3NZ867G0m+lMMbrw2vdtsXnhuIs7OaZ59fzuOP9TbIcz167AoXLmTy+qvVH1tQe+oaxuw9og0/frCe0JZ+tS5dqC8ymYx7nx/Cl6+tZMy07pVmYxYVlKCupJ5WoZAjSaZrBacp1aJSW9a9TqwJmpnAAFf27r1objPMTrt2gfz84xS27zjPl1/f7C19/Ok20jMK+O7r23jtlaE8/OhiM1hZO46fuMKUO3/hqWf+4raJ7Vjy5zQ619AAPLZtAKHNPejYvhl//X28xnMUFWmYNXsln3w0vsZtBdXz3zW8+q7j3fH4ABZ9s51SA7r/GBulUsFDL49kze/7Ob4v8ab3d6w+Se/hVXQYMmE7VL1eb3ERMCGCZub3Pw6xdVu8uc2wCORyOd9/czuJiVnMfPovzpxJZeGiw9wx9RfS0wqY/+0k5HI5HdoH0a5tAC/MXmnwsVevOYWdfcOFYbKyinjmueXM/WAMv/58J926htRq/3vv6cKKlSer3aagUMOUO39h9guDcHdvmG4ljQVjC15lKG0U3PnEAL58fSUlRaYLMVZ3/umzhnH6cBI/z9vI6cNJnD+VwsoFe7manEXzKN9K9zN3U/CGxrL80ibIH79N5Ycf9/H1t7t5YHrNE8abAu/OGcVvvx/ky693ER7myauvDCX8P2sbT83sx+wXV/HeB5t49ukB1R4vv6CE5ctPEFmP+W8pV/PYufMChw5fIie7CLWdDQ72KuwdVDg4qHBytMXeXoVarcTXz5lLl3Lw93ep8xqdl5cj2TnFlJRoUV8XPpIkiX0Hkvjjj8MkJGQye9bgGr3Lpo45xwV5+rpw5xMD+OK1lTzw4nAcTJh0UhkymYyJD/SmIK+Yw7vOo9PqaBkbRFhr/yr3sXe0pSCvGEfn+vXRrQy9CUOtdUVMkbAA5s7bwtQ7O+HpabpZdo2VRx9fQrvYAO6ZVnmnjvT0AsaM/55XXhrC4EGGtyLLySli/o/72Ls3EZlchpOjmuhoX7p0CaZZoCu5uaXk5heTn1dKfn4J+fkaMjIKWL7iBL16hqK0UfDs0/2xr6KPqSH8+tsBli47RlSkDyXFZVxOyQUgJNidiRNi6dA+qM7HbqxY6ny83KxCvn9nLfe9MKzaqQ2WwP6tcdjYKojtZlhje0ORJInv5qzl/tkNv3YtpkhYMHq9HkmCjMxCIYJ14NOPxzNm/PdMmBCLk+PNT9leXo6EBLvj7V21R3bgQBLrN57FydGWKyl5xMdnYGurYNSI1iz4ZWqlmaj+VTxIr994ljbRftx2W/3H6zg52KLTSeTnl3DvPV3NNqnAUrFUwasMF3cH7n9xON+8tYa7nxqEezW/R3MTERPA2oUHjC6CezacpkPvFkY9pjEQImhmiovL2LX7AhcSMmjXLpDp93Yzt0lWx5OP9+XJp/7iu69vr/T9zz8dzx1TF/DX0nsrBG35iuMs+P0Qd93ZiU8+287993VD0uvp0D6Irl2D61RPePzEFRzsVUZZe3zo4T9xd3dg4W933xAObapYk+BVhaOzHQ+9PIKv31zN5Ef74e3vam6TKsXF3YG87CKjHlOv13N453keed307RFri7i6zIy9vYqnZvbj8JHLTLw11tzmWCV9eoexes0pfvx5H3dP7XzT+66u9tx7TxfGTZhPWKgHF5OyiW0bwHtzRvHFlzt55+1RdfKyvvx6F3Z2NmzcFEeZRouPjzNvvj6cVq0qTzgwlN//OISnl2ON5RSNlcYgeFVh52DLQ6+M5Ks3VnHrfT0JaN6w5ROG4uhiR152kdFCtwe3n6ND73CLywwFsSZoERQUlPLB3C288NxAbA1o7iy4GUmSGD/hB+Z+OIbmIR6VbpNyNY/Ll3Lo2LF+iSSnTl3l0SeW0ry5Ox1iA5k0qT2ursZb57l9yk/8/MMUVE2gdrQxC151aMt0fPXGKkbe0YWQCB9zm3MTiWevEnfsMoMnGKeR9mcvLeeR10eZTQSrWxMUJRIWgKOjLaNGtmbpsmPmNsVqkcvlzP1wDC+9sqbKbfx8nestgACnzlzFz8+Z776+nYce6mlUAYTyGq8iM6TUm5qGKEuwFpQ2Ch56ZSRrFx7g3HHL6x8cHOFD3LHLRimXOL4vkejOwRbpBYIQQYvhhx/3EVHPCQVNneYhHmgboC/hr78eqHL90RhMmdyeuR9tNdnxTU1lYteUBa8qFAo5988exo7VJzh10LIaZshkMjr3i2T/lrh6H8tc7eMMRYighdCzR3NWrTplbjOsnm5dQ3jvg00mO35ycjZZ2cVk5xg3ceB6hg1pxYmTV012fGMixK5+yOVypj07mAPbz3F4l2U1zejUL4J9W87Wyxs8e+wS4a39zdq4viYs17Imxm0T2+HsoiY1Nd/cplg1jz/ah8NHLnPkqGlCTAEBLvh4O+HnW7fBt4bi4+VI/Pl0k56jNgjvznTIZDLufGIAcccus3fzGXObU4FMJmPQre35/bOtddpfr9ez7s+DDBgXa1S7jI0QQQvhg7lb+HPRYdwsvJDWGph4ayyPPLoY6d8p68ZELpdjq1aSlVXEgQNJPP7kUjIyC4x+ngEDI1i+ovq2aaZCiF3DI5PJuO2hPlxJzGTH6hPmNqeCyLaBNI/yYfXv+2q1nyRJ/PbpFgbf2h6lUmEi64xD408/sxJmPNwLjUaHha4dWzRHj13h+/n/cPFiFv37t2Dz5nOMHxvD51/s5NEZvY1+vimT23PH1F+IjPSmffsg3n9/M+++c4tRzxEXl27y4nghbpbH2Ht6sOq3fWxcepiB49qZ2xwAug1qxerf9/HrJ5vpObQ1wS3K2w9eTsjk+L4E0q7koiu7cS1eJpfRsXcLomItv6uREEELYemyo4SEuNc4J09Q/pS5cVMcixYfJSenGF9fJ+69pysxbfx47oWVPHB/d4YOiWLynb+gVMh56KGeRj3/sCGtOB+fyY6d59m4KQ6dTs+ct0cabd0jOTmbXbsSauyJWhuE4FkPIyZ3ZuPSw6z6bR8jJt9c92oOhk/qTHZ6Pvu2xLF52REAfJu50aZLc3wD3bCx4nIeUSfYAMx+aRVlGh3vvjMKvR6WrzhBRkYh/fu1wMVVzerVpygu0XL/faJbzDUKCjWUlGgoLNDw2hvriI7248SJFIqKNeglPa1a+XHnHR0JbV55TeA1xt06n2++noinh3Fb0k2dtgC5TEZxsYYOHYLw93fhjsmVliHVipMnU3jm+RV8+9VEAgJc63QMIXiNgz0bT3P2SDJ3PDHA4kOKlk51dYJCBE1IZmYh3/+wlx7dm1NSUsbRo5cpLCpjyOAoWkZ589nnO8nNK2bQwEgG9I8wt7kWxYEDSdx3/0I8vRy4685OqGyV9O/bAi+v2onZp59tp6RUyzNP9TeqfXl5JWjKtHh6OKLRaJl0xy8s+XNavY555OhlXnx5NT//MMWg0UhC7Bo/F8+lsWz+LqY9MxgXdwdzm2O1iAbaZuLcuXRahHvSo3tzgJuE7pGHezL/x714eoof939JzyygW7cQvvx8Qr2Oc9fUztw1bQFHBl426hrb9VPtVSolXh4OHD9xhTbRVY+oqY6iIg2zXlzFHwum3nDsawjBa5oEt/DmvheGMv+99YyY1KnaEUiCuiEWoIxEfn4JW7aeu+G1Tp2acf58JidOpFS6j7Ozmice60PbGMubDpCams+5ePOl6M+fv48TJ1OIi0ut13GcndW89+4tvPr6WpNki17juecGMHfe1jrvf/ZsGm1a++LsrBbZmYIbcHS2Y8bro/hn0xm2rjhqbnMaHY3CE0xLy2fV6lNoynQEN3MnONiNZkFuODjUfZZbbTgXn87CPw9TUlzGkaOX0Wol7p7aGS8vR7RaHa1b16+hsjn4c9FhVq4+hZOTLePGxHD7be2Qy+VotRLzf9jL/dNNu365aOHdpKbm88BDC9Hq9Mz7cAwtwuvWUadFuBfDhkTxymtrTdaUunmIB0XFZWRkFhi8/ni9uEnhEokZu4TgCSpFLpcz5bH+bFt5nF8/3sSkGf1QKIQPYwysVgS1Wolt2+M5cDAZby9HRo5ojYODiqTkbC5ezGbHzgsU/9t/UQ84OKiIbu1HdLQfTo62RrXlp5/3c989XQkJcQcgJ6eY7+f/Q2CgKzEx/hbbM686ikvKeHRGLwb2j+TTz7dz620/olTIKSnVcvp0Krv2XGD0qGjGjW1Lamo+K1edZNeeBEqKywBwc7Pn809vrZcNPj5O/LX0Ph59fAlbt8XXWQQBtDo9Fy5k1suemnj+mQE8+/wK5n876ab3ahI3/2AP7B1t2bPxNN0GtjSViQIrp8/INlw4ncJnLy/nnmeH4ORi/OnvTQ2LSIzR6SS2bD1Hamo+Obkl6LT/D1tpdRKuLna0iw3g8pVcEhKz0Okk9Ho9PXuE0rFDkEEik19QyskTKRw/mUJBQSkAXp6OtGnjR1SUD7a1TPHVasuHna5afQpvb8cbppbr9XrWrjtDUKAr0dF+tTqupfDGW+vp0b05/fv9fwjmtXDi6dOpNAt24+EZiykr02Fvr6JHt+aMHNEaHx8nduw4z+q1p5nz1sibjpuRWYC9neqGievJydnMeGwJZVoJZ2dbQoI96NcnnH79wnnz7fXY2Ch5afbgen0eSZJ4+tnlqFRK3nn7ZruMxRMzlxHRO5Kx9/So9b4lRRoeGv4pX69/vElMkBDUnbzsIn54fz2j7+5mkVMoLA2Lzg5NTMzi51/2M2JEK4KbueHiYoeNzY3pwJlZhRw7doXAAFeCg91RqYyTLpyeXsCx41c4fSaVsn+LPQP8XcjKKqKkVMs1ab0mste+K5lMhlwhw9lJTZtoP9q1CzSKPZbEqDHfMnvWILp2Dqn1vvc/uJCZT/QlKurmi3PUmG9xcVZTppVQKuS0bu3Hrl0XePutkURGeKNSydl3IIkNG+I4ffoqrVv5MntW/QTwep58ahmDB0cybEgrox3zhrCmJPHw8M+Y8cYtRHcKqfWxdq0/xS/zNvHZiodQKoUQCqpGp5P49ePNhLXyo+fQ1uY2x6KxWBFMTMzijz8P89STfW8SPnOg1+u5fDkXd3f7GzyVpsioMd/y99J7a10AXlm5gFYr0TrmHSRJz9AhUXz68fiK9+6Y+gtancQfC+4ymu3VUVSkYfKdv/BXHX/XhqzZ5ecU8eiYL/lu4+MAXDh1ldOHk4k/eYX+o9vSrkd4tftvXHqYv3/aw8fLHrToxsMCy2DFL/8Q0NyT9j2r/101ZSxynqBOJ/Hjz/t4emY/ixBAKPfwAgNdm7wAAigVco4drzyrtTq++XYPI4ff6GV9/Mk2+vUJp0+fsJumruskPUYYWWYw9vYqsrOLKSiseV5fXbM0nVztmfrkQB4Z+TlPjvuGPz7fSl5WIV37RzL/vfU17j9wXDuiO4fw51fbDTqfoGkz8o4u7FhzgjKN1tymWCVmi7ccOJDMgP4Rok2YhTL9vm4898IK1q1+sFb77dx9gV9/urPi3/kFJez+J5GPPhzD7n8SGTH8xrDN779ONYq9tSG6tS9r153i1v90tzdmZmb/0W3pP7rtTa8v+HSrQfvfMrUrH7+wjNsf7nvD609N/IbS4jJCIn14+oP6JR4JGgcymYxx9/Rg2fzdTHzQ+L1yGztmU6DzCRmEh3ma6/SCKpAkCY1Gy/BhrfCqQxG/XtLf8GCzf38yMW38CQpy47YJ7XBsoLKV6nj5xSHMnbfVLLV47t6OJMWn1bhdTkYBTtdNrJckiacmfoOjsx2frXiEuOOX+eWjTdzR/V3W/LGfzNQ8npn0HY+M+pxX7vvFlB9BYIEEhXmhslWyb/NZc5tidZjFE0xMzCI5OQdfXydznF5QDbfe9iMlxWU4Otri4VE7EczLK8HOrlzkjp+4wqpVp9m+I5733zXuhIW6UiF07m70v7Ujd/V6n1sf6M2oO7o0mA3ZGYWoDQi3r/vzIDFdQ4HyNcI/v95O1wFR3PPsEADue34oJw9c5PvNT/L4mK/Y/NcRxk/vSdcBLXn70T/YuPQwXfpHkpKURfqVHBZ/t4v8nCLQQ1S7IGa+N47czELcvBrnNXjJ2TLrLQPzsk127DHTurPku53odDq6DTJe4ldjp8FF8MDBZDZsOMszT/e3yvq5xsyZM6kU5JeyeuUDyOXUOikjP7+ElJQ8bp/yE74+zgwcGMETj/dBrTZP1L067+6R10b9W5MXVeU2xuafTadx83TA09eZj2ct48T+i2Sl5zNv8QM0C/eu2C71cjanDyfxxJyxfDdnDR16t0Btp6oQQIDO/SLp3C8SgJBIH86duExeTjEAD7w4nOemfM+q3/ahslVi72DLK19PwdXDEUmSeOHOH5ja8300pVp+3PYU2ekFrP59P5cuZNBvTFv6joxpsO/EUCxV1GqLIZ+jPkI5/r6e/P3jbnasPkGv4dF1Pk5TokGzQ5evOEFZmY5xY2OEABqBGY8toXVLH4YMbVnjNAVDOHrsCvN/+IeP540zgnUNT21DmnHHLvHq9F9p1sKLd341fT3shVMpvPfUYuQKGYPGtWP03d145b5fGH9fT2K7h1Vsd++AuUg6PS7uDuTlFCHpJPJzi5n53nh6DK7/E75Go0XSSmxfc4LVC/YRFO5FwumrxHYP5dDO8/gGufHyV1PqfR5DaSwCZ0pqK4wrF+zFwUlNv1tuXpduilhEA+3FS45SWKjhrqmdGuqUjZp339+Ej48Tl6/kMuPRxfTtG17n+XPL/jrG+g1nSUjMRK22MbKlpqM+63harZbk8+m0aBOAu0/DhARDW/nx1ZpHK/59OSEDGxsFX72+iq/WPgbAmSPJePu78tZPd5N6OQe/IHdSkrM4fSiZ8NbGabygUilBBYPHt0dlq2T7imPMXfIAKpWSb99eQ05GgVHOcz1C6OpHZd9fdcI4ckoX1i48wIYlhxg0vr0pTbN6GswTnPfxVp58vK9RjtXUeevt9aSlF1R4bJIk8cWXuzh89DLffjWx1mHM6Q8sZNTIVnTqFIyfr7MpTDYaxkpgeXHaj+RlF9NnVBvG32vcobuGMrHDW0S2DWT2Z5Mq1gmXzd9FYUEpdzxm3NFPtWHGqM955PVRtGzXrFb7CaEzL5WJ4oYlh9BpJYbeVv9Zl9aM2esEJUlPZmYR1QmuwDDefmcDkp4bQpZyuZwZj/SiX99wxk/4gXff38T6DWeqPMbu3Qls234eSZJIuZpH3Ll0+vVrYbECaIoMzlun98LD28lsAgjw657niO4UwhPjv6akSMOBbefYvvoEbrWcmWhsnp03gXceW1jl+5ec3Sr9n8C8VPa3GDS+PbZ2NqxcsNeMllk2DeYJHjl6mY0b4ygsLGXmk32Jj89gw6Y4cnOLeeShnvj7uxjlPI2V3bsT2Lr9PFu3nmPxn9MqnTl3jdfeWMfOXRd4cdZgSorLsFEpbugBOvmOn0lNK8DLywEnRzVDhkTeVDNnbhqiZOGu3h/g6GKHpqQMTamWwFBP3vrxbpOf97/8NHcDh3bE4x/iQXTnEIZMaG/Wlmn5OUXcN/Ajftn9LGmedW9aLrAMAvOy2bH6BFlpeYy+u7u5zTELFtU2LTOrkJ9+2ofazoYJ42M5czaN7+b/w9z3R1ek5P+56DABAa4Vw2gF5fP9xk2Yz6rl03F1rXnqeHJyNl98tQsnJ1sOHEhGrpDx8w9TkPTlWZwPP7KIhmiOXhsaeoyQJEkVoeOU5Cx+nruRDr1aMHBcuwa1w1K43oPYu3Q/S99awZz9r4rWbY2Ew2uOojmdxPj7zBf9MBcWkRhzDQ93B2Y+2a/i315ejjjYq1i1+hRZ2UXIgKTkHMLCCoUIXsfqNadoEe5lkAACBAW53TDF4e13NjLt3t+wsVHw/nujKSyquW1YQ2DO+XnX39z9gtx5Ys4YZoz6okmIYHXhyz9fXUbs0Dbo9XqyU3LwCHBvQMsEpqLdsLYcUyr4+od9PDCts7nNsRgsok19+/aBtG9/4ySGZX8dY/eeBLp3E0II0K1rCOuqWeeriVnPDwTK1xSHj/ya+6ebNyxiicNjbdUqWncMZtWCvYyY0nAF9A1BTWt2qz5ez/6/DoJMRkhMEH+8tIQxz40QAtjIiBkUjUKp4Itv9jDqqWEE5eeY2ySzYxEiWBljRrfhldfWIkl6unUNafJTlKOifCgp0VJUpKlXg+9Zzw/isUf7mKV9mSUK3395+LVRzBj1uVWLYG2TVDbP3872X3YxZ98rIvTZBGjdryUKGwV/v7uK0c+NKB8cYMJONpaOxf7iZTIZ99zdBZlMxsefbDO3ORaBjVJhlAkXDS2ADdmbs76oVEq8/V04efCiuU0xmPpmacbtiWfcrJHI5XK0Wi1H1h0nIznTBJYKLIWonhG06hvFkjeXo9frm3SGr8V6ggAhIe6EhLhz4EASFy5kEhpa/64o1oxCKWPx0iP8vfwEzUPcef3V4eY2qVqsRfj+y0Mvj2Tuc0v58M/7zW1KlRjzhnX3x1N4uedbZFzMYsM3W4ju35IVH65BL+nR6/U0bxdM11s7EdFVzKtrTER0DUdpo2TRa39x68ujkcvlFb+rpuQZWrQIAqxddwatVmLX7gtNXgTffXsUC34/xLtzRrFo8RGmTlvA55+Ox8mx6nIJc2Ct4gcw97mlnDmSjI3Ksi4NUz6lq+1teXnz86z5ZD0vbXz2hnXAMzvjeG/MR2RdzhYi2AgJ7RCCXCnnz1eWMfG1sRXh8KYkhmadLG8IH32yjccf7S16jVbCjh3n+fTzHZSV6fjmq9vwMnORtTWLH8CVi5m8/9RiPvxzukWsjZkrPKXVaPns7m/ISclFZa9i2kd34NfCxyy2CBqG5JOX2PnbHm57fTzy/+RfNAYhtKgSidoil8mEAFZBr15h9OoVxpGjl3l+9kq+/+Z2s9hh7eIH5TWDz9z+HU/MGWNWATTnukxqQjofjv8EbamWITMGMuShuvWiFVgfQa0D6T21J7/PXsRtb4xHafN/aWjsXqFFi2BOTrFREkEaO7FtAygq0pCVVYS7u2F1hMagMYjfNeRyOV5+LmbJQraEhITLZ1J4Y/B7TH3/NtqPiEVtYSF2gekJiPRjwPS+/D5rMZPeuhXlf5YELjm7NUohNH/MpxqWrzjB8GEtzW2GVTB+XAz3TP+deR9tbZDzNSYB/Hj2Xzw88jPsnWxp3Sm4Qc5paT0389LzkLQ6zh9MFALYhPEN82HoIwNZ8MKfaDXam963lN+rMbFYT1Cv15NyNa/J9hQ9fPgSL726BmcnW1yc1Xz5xcRqt791XCy3jotl8h0/m9Quaxa//JwiLiVk3DAdIT+niH2bz/LOr/cQFGbaPpmWegP55sEfiN+XwJz9r4rieAFeIZ4Mf3Qwi15bxu1v3nrTclRj8wgtVgQvJGQS0aLpNu/99bcDPDC9G6NGRjNm3HcG75eZWYRGoy2fGWdkrFkAnxj3FdoyHbnZhdz7/FD2bjpDUnw6Oq3E0x+MN6kAWqr4ARTkFHHl7FXeO/S6uU0RWBBeIZ50Gt2B1Z+sZ8TjQ256vzGtE1qsCB46dIluXUPMbUaDI0kSDzy0CHt7G0aNjEaSJIpLtGzaHEdUpDevvbGOgoJSvLwcuW1CO7y8HXl7zgYA1LZKcnKLjW6TNYvfNXRaic9WPMKJ/YmsW3SQAWPa0b5XmMmSYCxZ+K6nOLeIksISc5shsEDCO4eSeSmLfxbvp+utlQ9DbwxeocWKoEajxdbWYs0zKSlX81i6aBpQnrDxyEM92LU7gRdfXs24sTE881R/fv/jEGvWnSY3twQ3N3ueebo/kk7Cw8PRqF5gYxBASZIq/ju6UwjRnUJMdi5rET+Ar+//gbTEdMY+P7LmjQVNki7jOrL6k/XE7YknolvldaLWLoQWqzL+/i5cupRj9tq3hkYul/PEo70ZM+57iorLuO3WWB56qCe3jGrDpNvb4+FePm5q0u3tTW5LYxBAgDKNFoXStDlg1iR+APH7LnDhYMINo5Li910gvHOomS0TWBrDHh3EwpeW4uLjgk9o5csG1iyEFpsd2qVzMKvWnDK3GWZh4MBIHpjenUV/3M26DWcqPJkW4V4NVgLRWAQQQFNiOhG0pAzP2hDaMQSVvYrslBw+mvwFz3d6hY+nfMnCV5aa2zSBhSGTybj15dGs/mQ9hTlFVW5njdcBWLAI2turcHBQUV1Hm8bM6NFt8PJyZNCgKMaOn8/Wbeca7NyNSQABCvJLsFEpjHpMaxW/a8jlckoLS/ny3u/pM7Unr255gfcPv0Hy8UtCCAU3oVQpmfDKGFZ/vL7a7azxmrDYcChAx/ZB7NyVQK+eTTdE88hDPUlIyOTS5dwGOV9jE0CAdX8eoFO/SKMcyxov8qp479AbN7329NLHeDzyOfwj/eg1uZsZrBJYKo5uDtjaq8i5mourb+MpXbNYTxCgZ89QNm+Oo7SSos2mRPz5DNauPY3GxN9DYxRAgMM7zzNySv0maVu751cbnLychAAKKqXfPb3Z8sP2arextuvEokVQJpMx/b5ufD//H3ObYlb+WnIvQwZHMe9j081VbKwCCCBXyNFLNW9XGU1J/K6hsrMxtwkCC8XJwxG9pKcgu7Da7azpmrFoEQTw9XVGp63jHawRcecdndi71zSDXhuzAALY2avIq2ZBvyqs6UI2Kk1zGV5gIP2m9WLLDztq3M5arh+LXhMEKCrS1KuJdmmplgsJmWSkF9ChQ5DVNuS+577fUZogw7GxCyBAYX4JqlrUnFrLxWsKMi9nGf2YqSrzrB/5aBpmHb2p4ebvRnFeMSWFpagdbKvd1hpKJyzeEyws1ODgUHfhOnM2ld//OIRCKeeHn/axdNkxI1pnOiRJ4sO5W/j1twPkF5RQWKThzz/uNuo5moIAAkiSHnsnw5pCN2UBBFj06l8Mf3zwDa+lnEutcb9UlUuV/zMXlmZPY6LP1J5s+3mnuc0wChbvCebmFuPsXPeu9pIEHu72dOsaQvduzfngwy1GtM50fDB3C7t3JxAW5snGjXGMG93G3CZZLWp7FUX5Jag8qm680NTFT5IkJK1EbloeFw4m0n5EWzQlZTwe8Sy29ra8tOFZvII9AfN5dsaiMvuF11g7fEK9yLqcTVlpGTa21a8hW7o3aPGeYOLFLIKD697Zvl1sANrr1hS9vBxZvOQo2dm1XyNqSJ59egDdujXn8pVc5n4whttuM26HmKbiBUJ539DqwqFNXQAB/n53FbO6voaLtzM7f9vDrK6v8Urvt5my4EkmLXiS72cta9SelPAWa0+vyd3YuWCPQdta8jVm8SIoSVCQX4pGozN4H61WoqCglIyMApIv5SDp9RXjQKbe2ZEWLTz5Y+FhU5lsNJ57ZgCzXxjEHVN/If58utGO25QEEECn1d00IBSaZuZnVUT1jECr0XFk0ymmLHyK6Rtf57ED7xM5qC12LnbkpVjuk7wpEIJYM4GtArhy7io6reH3ZkvE4sOhvXuFsuzv4xw6fInkS9ncNrEdbWMCqtz+8y93lq8B2dmgtrPBTm3D8GGtKt6XyWQUF5WRnV3EJ59uR3+dQAI4u6gZNaI1trZKHB2rX/RtCNpE+/PD95O5577fefutkbSN8Te3SVaHTitVJBWd2J9Iizb+pHv7mNmquqHVaDmw/DCxw2NQ2xvn95mqcsF9QGeeOdPxpqka8dtP8tcTP3DvX88Z5VzWyPVCKMKmN9JlbEcOrjhM57Eda9zWUsOisurakrWJ9tMvW3JvA5pTPf/8k4ik1+Ph7sD2nedpFuRGj+7NSU8vIC29gIgWXlxMyubI0cvcPbVuxdGHj1zm1KkUDh2+zIfvjzbyJ6g7eXkl3HHXrzz/zAC6d29e5+M0NS8QYOaEbygr1aLX6zl/6gqDHx3MhJfHmNusGjm57QxrPl5PQU4Rcvm/D2oyCGoVwKltZ3js1wcJig6s9XEN9W7+mb+JLe8v5+5FM/GLDq71eRozQgzL0ev1/PnKMm57fZxB25tLBHt7P31Qr9dXqtQW7wleT2xsAHPnbaV1tB8Tb40lKSmbXxccoKxMR6eOzfjhx73Y26s4cfIqvXuGERrqUetztIsNoF1sAJKkJ/58BuFhnib4JLXH2VnNHwumMnHST/y15F6TlEs0VuYuuh+AOY/9QdiAaIsXwLO7z/HHS0tw9nJiyru34dfiZq/1zaHv4+ztXKvj1ja0d37bKQqz8nH2F9Pm/4vwDsuRyWTIZOWJVYbM5rREb9CqPEFDKCrSkJ5RSHCz+nk8ubnF/PDTPp54rI+RLDMOb7+zgejWvtwyqvbZok3RC7xGaYmGB8d/yxs7XjS3KRxYcZjdC/eSdSWn3MO7Fo3Xg6ST8GzmwYRXx+LTvOpp94te/wtXXxcG3d/vpvdO7zjLotf+Qu2oZsryWSiVdX/W3ffTFlJOJDP6/al1PkZToamK4d6lB/AJ9SIk1vBoQUMLYaPxBA3B3l5FcLP6F8Q7O6stcoKFvb0Knc7y7LJ0Zkz6gfEvmje8/c/i/Sz/YDXN24cw6qmhNG8XUudjjXhiMB+M+7RCBDd8s4Udv+5GrlSg9vNg0p/PcH7bST7r/TJP7H67zufJSc7ERi3aqBlCqsqlSQphdP9WbPlhe61E0JJodCJoLGQyGQoD3PuGRpL0KBSymjf8D03ZC3zh0UV0vKU9sUPMV2u5/P3VnN4Zx+vbZ1eaqVpb7J3t0Wl1FOUVMXfi5wRE+vHA9rdQqv4vWI5eLqSdvUze1WycfWv/989Py2HPdxuZtvhpNEUlZCakg15i/ZtLyL+aA1DeRzIjDyfv8vCgXg/X8sw0RaXcvegp3IO96/15rYVrYdKmJIYOrvYU1aEtoaUgRLAKsrOLKCrSmNuMm9DpJOQKyxNnS0SSJD54bxM2djaM+E8XlIZCU6Lh87u/BeC5v58w6rG7TejM7K6v0+e5cXSbPuim94M6htFmdCe+GfE2Haf0pu/MUQYfuyingN1frae0oJilj83HRq3C0csJZDLa3daDmLFdACoGPle2HnT5WCILp3/FQ+tfruMntF6amhiqndQU5RVj72xn0PaWtDYoRLAKVq0+xdXUfBYvOcqt49ua2xygfD1w06Zz9OpVu/mKTdULvO+Wr2jVN4r7v5rW4OcuyCli1by1HF59lFtfHkPHUe2Mfo52T46n3ZPjq3xf7WzPpPkzkCSJpY99z0fdZ1WE+Ac8O4bsi2mE9Y0mMLY82zj9XAo/3TYXWyc7ZHIZbcd34dVL36JSV728UF0yREBMCGonO/b+sJku0/pXuZ2mRENZUSkKpQK5SolSpTQoycIaaCoh0tZ9W3Jy62k63WLcph4NgRDBKpg8qQOTbm/Pu+9tMrcpFZw8eZVNGx42txlWwSVnN5S2Sm5/vWqRMDYJhxPZ9ssuEg5exEZtQ7eJnXhzz0v1SkypjNpmecrlcm79bHrFv3OvZPHng1/TvHsUyx6bT8y4zrQa1ZEvBr7K+M/uI3pUJ6PZeteip/h+zLvs+3ErMll5uBT+HzKF8lFXcpUSvU5Cr5OQdP/v8HRt+8hBMShUSjIvpNJ2Qjda9Iu2GqFsCl5h8/bBHFx5pFYiaCneoBDBKiivy5LRqVMzNm2OY0D/CHObJDCQa11gJBMkEGm1Wvb8uZ9j60+UT1zQU+Fdufq60G1CZ6Z+MMkkN2hjdS9x8Xdn+vIXAOj/7GjmdX6eQwt30/2BwUYVQCgX4GvnqitarZatH6zgyrFEOt7Rm8N/7GL9a4uQyWXoJT16vR65UkHb8V3oct/Aaj1Xc9KYvUK5XF7xt7i++Yg1IESwBgYOiGDex9usVgSbWij0mgBqSjTI65BAVBkp51JZ9/lGEo5cRCaTEdEtjCGPDCCkXTOje3lVYar2XXK5nIc2vkxJbpHFJrAolUoGPj+24t8th97sbRRm5bPz87V80f9V1M52jHznjoowryXRmIXQP9KXK3FXCYj0M3gfS/AGhQjWgLU91TRlru8DeuXsVeyd7Qwu4r0eSZLY/ec+di7YQ3F+MU7ujvSe2oOpc03j4VVHQ/SutHd1xN616gkb1oCDuxNDXprAkJcmkH4uhSWPfodMLmPS/EfqlBlrShqrEMYMbM2exftrJYKWgBBBAwgP8+Sb7/Zw/33dzGqH1sob1TYkIW2boZf0vD7wvYq1qFueHkr74bGVbl+QU8T/2rvv8Ciqvo3j3y1pm0IKAUICJHQIPQFCCTVIE+lIrwIi8vCoPFIURUXEV+xIUwERVERBqQJCQEAU6T10CBBaet8y+/4RiWB6sruz5Xyuy4u4uzPzy2Z27j0zZ87ZvnAnp3afxSgZqdmiOuOXjMIvUL7RUsTgzaXjXyuAZ3+ZzbU/L/DFU/MJ7RVO19kD5S7rMfYYhOUqliPlXorcZZSYCMFieKpXA/7z3/VlnuC3rFTi1ogC5TcbxP82TM39OS0hja9fXsv6tzdRqWZFfAO98fDxIOb3i6TGp3Hn8j36v9qbV7ZNK3J+NHMT4WcawS1r8+Khd/lp2ld80vZVRv/wklW1Cu0xCNUuTmgztTi7Ff84KfcpURGCRTAajZw6HUft2v6yBeDZs3d48+3tlHQAG0e5Hlic6ZA8fD2Y9MU4JEni+okb3L18n6S7yYz8YCgVQ/yZ02k+XSZ2kL3HoQhA0+uzYBQ3j19lWY+3iRjfhbaTuspdUi57C8J6kbU5t/8Cjbs0kLuUYhNNi0Is++IgCz/bR2xsEs9OaFOqddy/n8a33x3NmblbkopeIB/x8elUDijHq7Py3hAtlIxSqSSkaTARA5rTbXJU7vicwU2qcHTLCVlrEwFoPkFNQnjx8P8Re/gSi594k6wU6xnhxJ7+7rUianDx4CW5yygR0RIsRPyDdGbOiCrTOsY88y11avvz86ZTqNUqVn81vMTrCKjsRUpqFg0biLkE/81Uk+K6e7uTLuPQT/Z0ILRWSqWSIV9O5tJvZ/gkcjaDv5hE1eY15S4LsJ8WodpJ/dh9nsUl5ylR0RIshLu7M8nJmWVax/9e6oQkGfluzSiUSgUjRq/m3feKdwP+jp3nmf36Vt6et5OrVxPKVIc9MuWs8OkJ6Wi8XE22vuISs5dbXs12oUyOnsP3E5eg1+vlLieXvewHahcn9DrreV+LIlqChVCqFGRl6SlXhn0zJuYeOl3ON6NFCwdy/Vo87y7YXeDrtVo9Q4Z/jauLmrg7Kcx9owe16/hT3s+2u7Bbu/aj2vDTu1to3jvMYtu0l4OeLXL39aTLqwP4NHI2U/a++djA40LZVKpRgbuX7xFY1zbOXImWYCEqVvBky9azZVrH5q1nWPhJztBdHu7OhIYG4OysYtv2vOtNSMigU9QiRo0IZ83XI9i9czKtW4eUKgDtvVOMKVuBACFNg0m6Y7nTUSIA5de4XwRqJzU3j1yRu5Rc9rBfVK4bwK3zcXKXUWyiJViIY8dvMuX5diVe7sTJ20x7+Wd8fTVUrZL3YL3g3acYOPgrdu26SP16FVGqlKSlZvP9D8eZMaMzT/YINUX5QglZanYOezjQ2Yu+n4xl/ZQvkQwSTQe1ov1/iz/ThrnY+vXByrUrcWL7qRIvJ9d1QRGChRg9sgVfrfqLGS93LtFyCz/bx9LFg6ge4pfv897eGnb+MonDh29w+uwdDHoJPz93vl09gsBAbxNUbt9M3Qq0JBGA1iWoSQj/2TcXSZL4rOMcYn49hUKpoPubg61y2DVb4OzmjC5LJ3cZxSZCsBC1a1dArzMw8OmVxMen8/VXw3Bzc2bMuG9o0yaEF//bEbU6b+shJTWrwAB8VHh4VcLDq5qjdEEQSkCpVDJp52wu/HoK/1oBrP/vcrSpWfRbOI7ARsEWr8fWW4MlvadZTiIEi9C9ez3at6/J+Zi7jH/2e9RqJa0jQvhu7TF8fDSMH/fPUGoH/7jGuh+O4+Vp+V6GjsKcrUDP8h4se3aF2eYfFK1A66Z2dqJ+j5zBuSdueYWkm/Es6fomM858LEs9thyECgWlGrdXDtZfocyOHL2Jh7sz48e1YuumCWzc8AxKFVSq5MWQwTk9CSVJYsNPJ3n2uXUEBHjx+dKnZa5aKKljv5zk7qV7RI3vaJb1iwC0Pd5BfnhX9efE+j/kLsXm+FXxI/6GbdzWJVqCRYjqVJudv8bQtGlQ7mPTXuyIf3kP+g9cjqenC0qFgmZNqzBvbg/WrjsuX7FCqamcVNRoHkL1sGCTr1sEoO3q+8FoPmo9izpPNMbVw83i27fV1mBg3QBuxcThH1xe7lKKJFqCRahe3Y+aNcvz86bTuY8plUpGjWxOyxZVeWVGF77/bjQzpnemZ49QMjN0pR4eTSicOU+FNuhYj9sX7pp8vSIAbdtfq/bi6uXGwaU7OfRVtNzl2Iyc2yRul3g5OTq9iZZgMYSHVWHdD4+PK6lUKnlzTo88r1WqFDZxHlzIodfruXzoKt/P2UBmStlGBxLsz5PvDMOvRkViD1/mr1V7yYhPo8OL8t9GYe08fNzJSLKNz5MIwWKIj8+gQoWib1hPSMjA2VllgYqsV3aWFhdX+aabKon71x/wXt9PUKoVzNj4Aq4epu3QJFqB9qHVM1G0eiYKvV7PRy1nkpWaSdNBralYL6johU3AVk+J2sp85KLJUgx6vQEnp6LDbdnnB+nXp5EFKrI+kiTx7gvfM6HLx7w2bhUAZ45c58cv95tk/eY4TbJw1DJ6TO3CvD9ex7uSt8lDULAvarWaidteoVygL2snLJG7HMFERAgWg04v5Xs/4L+dOHWL3k+ZZx4tSZKYPOUHjp+4ZZb1l0VWhpZnu39KnUZBfLXvf9QPq8rEbh/z47J9rP/yAD9+uZ9D0TFyl5lHzRbVcffWmOX0tWgF2ifPCt60HNsJo4VvhBP7k/mIECwGnc5QrBAEzHY9cOoLG2hQvxKvz9nGiZO3kSSJq9fiSUiQd160+LspPNvjUya91pM+Y1oDMPi5Diz9ZSqvLR3Okq1TSE3KYPEbmzl/PFbWWv/Nv1p5Dnz3p8k7MokDln1TKpVIBgm91nZGRREKJq4JFoNeL6FWF346NCkpw2zfDufN30mFCp5MmtSWHj3qM3L0GipV8sTPz4PMTC0ZmTrcNc4s/2JInmX3bDxB1ZoVqF4/4LHHNyw/wK4Nx1EoFET1b0rvUa3yLFuQuNgE9m46yeG9F0lNzuD1JcMIqVsp39d6emsY/dITdOnXjCm9FzF/9VhqNyrZtRRz9RjrNjmK1Pg0vp21jmHzxb2dQvE17N2CPR9sJmpGX7lLEcpIhGAx6HUGnIu4Jrjg/WjGjGxp8m0v+/wgN28ms2jhAACqVfNlb/SUPK97euhX+S7/1Ye/kpmu5eX3B9Asslbu49vXHWXRlskATOm9GKNkzG3JPerovov8tPIgiQ/SkKSckPcs50qzyJq8/OFAKlT2LtbvERhSnhqhldmw4nemfzioWMs8aueyaPZ/c5DbMXEsjv0Qtdo0u667twZVMVv5gvBQhxefZFGnNywagjbXQUahsIlRY0QIFoNOL6HRFD7f2OWr8cx9q6dJt/vue7u4fTuZhZ/0K/R1qWlZ+XbcuXX1Af4B5WgUUZ0lc7fSqGUIo6c9gYeXK07Oqtyd8+MNE/nstU082/3TnPU80qvLs5wb42d1p0rN8mUOnsatqpd62YPrDvHGnlmsmbGWpeOWM/mrCWWq5db5OG6dv82+Nb/zevTMMq3rUeJUqGOQJCMqZ3H4LIyblytZqVloymnkLqVQ4q9YDHfuptCqZbDFt1u1ig+H/rrB7t0XKe/vQZPGgfm+bsbMzfTpnbdDTjk/D+7GJtL9w3CGPt+B7d8f4fleC+kxtDnZmdrc16nVaqbOM/832kHPtmNyz4W0eaI+3n7uePq4FTtYjZKRrIxshs1/mtfbzyMjJYOlE1YQe+omkcNbk3QnmfDezYg5cAEPXw+6TY7i9oU4KtWsmOeb6NIJK4g9e4v0xHQ05Sw/Cohg+35ftJ1qLWsV/UIH5u7tTnpShghBe1C7lj/rN5zk1u1k3n0n/xtlfX00DB2+ii5RdRgyOAxX17K/tUMGN6NdZHUWLT7AiZO3Wbp4YJ6plrZuO4uLi5oB/ZrkWd7Dy5VGESFcPH2LiM716D64OZ36NObbz/bwxCDLzaD+kLOzmm6Dw1m5YCeZGdncuHiPzn2bcuvqA6bM7Y1fRa8Cl203og2Lx37BC99NZvDc/rzT8wOcXJ14bsV4rp+6QXDTamyYt4kWfcM4ty+GQz8dwSgZ0WZoCWlWjaD6gZzceYbM1ExqhIcwd/+rAJyJPsd7fT5m9o6Xy/z7iVag4zj10yEm73lD7jKsmru3hvSkDPyryV1J4UQIFkGnM3D6dBx6g0Rg5YIPcp99OoDUtCxWf32Ybj2WsGf38xw5GktYsyp5XqvXS1y7Hs/FS/e5cT2REcObM/OVzdy/nwZAVrYeL09X2kVWp2ePUIJDfClf3p0tW88xYXyrx9azaMkB1q8reNaDsMha7N18iojO9QBwcXVm9EtPlPbtKLP+49rSf1xbADLSsojedJJqtSrw9vPfodPq+fTn5x57/cNOMe1HtmHf6t8BqBdZh7f2vZr7mpotck6zNu2Wc49mt8lRuc89iI0n7uJdTu8+y8DXexPSNPix9Yd2rMe6t3427S8p2D+FGBmqKJpyGjKS5O29XhwiBAuxa/cFjh27ha+vhqlT2qFUFj4EgqeHK5MmteXUmTsMHb6Kk6fi2LZ5ArNf30a2Vg/kXG5TKBT4+moICvImK0tP735f0iqiGh9/mHPt7/DhGwSH+LLhp1NMn7mJuDsp+PpqWLNqeO62JEli9Ng1TBzfih2/xpCYkMGP60/g7u5CVrae0bN7seOHI/j6e3D13B2zvUdlofFwpeeQFgCEtavFM1EfcXjvRcLb5z3N9LBbekmVr+JH+Sp+NOxUv8DX+ASU4+qxa3kCUhAKJNOEebbUOcbdR8P96w/kLqNIIgQLceToTV6e1qnEyz3sybl8xR88+9w6Fi0cQLVqvsVe/uFEu+PHtXpsvsJHZWTqeRCfzm/7rqDV6qlbuwIff9iPatV82bP3Ih+8s5VJrz1J/N0UIqLqlfh3sDQffw/e/HIEqz74lc/mbGRF9EuPPb9w1DLqt69rlm1HTejI2tc2MGPTC6VehzgVKgiPc3F3ITstW+4yiiRCsACXLj+gYgXPMq1j7JgIxo6JMFFFj/Nwd2bcmAjS0rIZM/rxWzM6tK9Fnb4tzLJdc1EqlTRsEcJ7341nwbQfmPDERzi5OKEJ8iPxdhIp91J4vow9QgsS2r4u6+ZsQJulxdlGxj0VZGYrA2PKKDstCxcPF7nLKJIIwQIEBZbj4qX7aLUGqx0Ue+CAJnKXYBbTFuS0pD+ft40UF1f6vfKU2XtxBtarzPkDF2nUOdSs2xHsg6TXy12C1ctIzsTdynuGggjBArm6OtGxQ02+W3uUevUq4uOjwcfHDV8fDQrxLdAixs/qbrH5xTqPa8/P720RISgU6W7MLTS+Rc8q4+jSkzPwr+ondxlFEt2bCtGhfU3Cwqqg1Ro4f/4uW7acZcaszVy/kSh3aYKJVQ8L5s6leywZv5xb5+NKtKy4HuhYds79gQ4v9Za7DKuXmZxp9fcIgmgJFkqlUhJa//ExMTdtPoP2756ekmQssseoYDtm/zqd2FOxfDJsMWG9mjLgtd6iG7yQR0pcElXCSz/6kaNIT86wicEoxCe8hJo2CWTr1rN8/Mle3v8wmjXfHJa7pHwFJIjWakl5eGty7kE88CruPu7MiniDkztPy12WYEVidp4g4fo97p2zvinNrE1mShZuXiIE7U5QkDdT/9Oeqf9pz/9e6oROL7F5yxm5yxJMyNnVmZ5Tn+C1X6ezb81BptadzvWT1jUNlCCP7W+uY/S6aVRtXlPuUqyeZJBQFTH7jjUQIWgC6enaol8k2ByNl4bJK8dTL7IOdy5Z54ADguVkJKWRnZpJUJMQuUuxDTINKFBSIgRLyWCQWLL0ANu3nycsLO/QaIL96Dn1Cf5cf0TuMgSZHVi0nRZjSj54hqMqzQhPchAhWEqZmTquXInn7bd6Uj3E+rsBC6VnMEgmn31esD3nt5+g1fjOcpdhE1Lj03D3dZe7jGIRIVgGHp4uVKvmI3qI2rmdS3bTbnjeCYdB3B7hSCSDAWeNq9xl2IRz+2Ko3848wxyamgjBUjp1Oo6gQG9UKvEW2jvfQB92LomWuwxBRtcOxuAb7C93GTbjyuFrVGtkG5eJxBG8lKqH+JGeITrEOIL+r/YmK936BwIWzEtVzAmgHd3lw1cpX80PZSkaCEEplr+1S4RgKdy/n8bSZb8zfpx5Bsf+N4NBYsfO8xhKeKFZ3CtoOpJeXBN0ZJVCq5B8K0HuMqxedkY2+785SKdx7eQupdjEV5tSuBGbCApISs6kkquT2baj0xnYuOk0Fy/eR6szEFDJi4YNK+c+f+1aAu7uzvj7i3EMzU3lZP33Ownm4+qlQa8Vg2YXZdOCbfR6qbtNjbQkQrAEjEYju6Mvsmv3BVQqJQrM0yEmW6tnw4aTXL+RSK8nQ+nfrzGSZOTDj/agVCmpHuLHnr2XOHwkluwsHaNHt6RKFW9cnMWf01wkKf97nipqk0XnGMFirHlC3WO/nCSofiC+gZYZ9N5UxFGzBKL3XCI+Pp25b/Y0SY/Qi5fus2nzGdT/Oneu0xno3bshg59ulvuYUqnghf924Pt1x9gdfZGO7WvSrWtdsrP1bNx0mi++PEj3bvVo306MZGEOLhpnEuIS8Q2wrQ+4YDquXq6c2XyY0CfD5S7FqhiNRvas2Idep6fLRNu7j1KEYDHodAaWfv47AM8/F2mSdS5d9jseHs48/1xksecrVCoVjwUj5Ez5NGhgU6pU8eH2bev9lmjrgptU5fxvMbR+2jLXgQXrM2rdND5qOZOQtnXReItLEADaLB3r526kYVQooR1s45aIf7OdE7cySUjMYOqLG2gVEWyyAAQ4e+4Ow4aGm2zC3t3RF+nfr7FJ1iX8Y/viXcxsOYfTu86K64IOztnVmUFLJvBl7/+TuxSrEB+bwJrpa+kysaNJAlCOnqEgWoKFun8/ja9X/8WrM7tQubJpr/sEBnpjNBpNMkGvwSDh5ZX/TbwBCYnE+YpTeKXlonGmTqtajP5omNylCFYguFUdglvVYsur39Bz7lC5y5HNud9iOLHjNMPefRpnM3YOtATREixAQmIGi5ccoFOn2nkC0Gg0cvp0HFlZuhKv987dFJYu+x3JIKHTmabb/bZfznHi5C3WfHOYnb/GEBNzj0uXH5hk3Y6uw6hIrp24wZUj1+QuRbASveaP4PLes9w4fMmi27WWTjF7Vu7jVkwcT7/Vz+YDEEBhLGSk74YNAowbfhxnwXKsx/sfRDP+mVZ5Wlhpadl88OEeQkJ8uXIlnl5PNqBp08AiW3RXr8azfsNJvL3d6Ne3ET4+pptx+dz5u1QJ8iYzU8e9e6mcPX+Xy5fjGTSgCdWr+9l8S/Cml7z1pzxI5e1uC6jaIIhJy8ehVCqJPX2TZZNW4uTiRIWwWvT9cIysNQqWlZ6Qymcd5/DiX/NRO1smCOQOQYPewIZ5m6jTuhYNo0JNvn5zng5tV2HaEaPRmG+PJtESLEDFip689/7u3P9PSsokO1vPgg+ief75SEYMb86MGVEkJKbz/gd7WLzkAJev5N/62rrtLLt2X2Tyc20ZNzbCpAEIUK9uRTw8XPD39yA0NICB/Zvk9l6Ni0sx6bYckVd5T949/AYPYuNZPuVrLvxxiaNbTtCibxheFTxJuHZP7hIFC3P39aTbnEGsGLBA7lIsIi0xndUvr6XNkAizBKCcxDXBAty9m0qf3g0B+HnjKaL3XKJcOVcmjm+N798h5uKsJqpzHaI61yE1LZsdO86zc2cMz05sA8D6DSc5fSaO7t3qkZmpw9WCpw769mnI/6b/zMABTWgfWs1i27VnU1ZP5OqR6ywe9yVqZzUjFgxm/5qDzN41g3S5ixMsrlHflpz66RD7F2+n7aSucpdjNnEX77Bj8W76z+6Nh495ZoaQq1MMiJZggV58oQPfrzvOpcsPuHMnlffefYqRI5oX2EHG08OF/v0aU768B8eO3QRy7gPs07shf/x5nbQ0y44zWqumPxPGt6ZaNV8xfJqJ+Ab4EPZkEz488w7vHXuLRp1Dqda4CjsX75K7NEEmQ1ZM5s8vd5n9bICcp0J/XbaH4f/3tNkCUG4iBAuQkpKFu8aZb749wrixETg5qahRvXyRy/Xv14hNW84QdycFJycVDRsEMGVyJKNGNrdA1f84H3OXCxfv0yoi2KLbdTTPLR9PYlwyn7abzSeRr/Jx21dIvZckd1mChSiVSkaufYEVAxbY7ZyTrh6uqNT2e3uQOB1agHLl3HhtdslPcSgUCsaMbsmMWZupVNGTyf/5kbfmdMfPz3LfotLTtaz74QSvzOxisW06srGfDM8dOu3PFbuJXrCR2yevo03PzukwpVCgUICzhysN+7Sg1TNRMlds/Qx6A5lJ6WQkpJGZmEZGYjqZielkJKSSmZSBXqtHqVKiVCtRqlWo1Krcn3MeV/39+D8/P/p6hVKBUqVEoVQ+8nP+jylUKpRKxd8/5zyvVClROalQOavxrOBN2PBI1j6ziCHLn5f7rTM5W5khvrRECJpBlSBvGjUI4MmeoWzecoaTp27TsUMti21/zbdHeGZchN1M9huUkih7D9GiPBxDVOWk4uyWI/hVr8h/9s3NfV6v15PxIJXPe71Dy7GdbGqAYXORDAbiTt3g8r5zpN1Lzgmfv3dZpUqJm48HGh/33H99gyug8fXAzVuD2tkJSZKQ9AYkfc6/hoc/Gx4+/u/nDDnP6QxIkhGjJGGUjBgNEjqdAaNBwihJOc8Zcp6T/n7sn5///tdgwKCX0GfrMGj1GLR6lGoVv8xZa7L3x2gElVpJOZUeJxcn1M4q1E5qVM5qnFzUqJ3VuY+pc///78dcnFA7qXByccKzvEeZWnIBtStx7cQNghtXNdnv9ig5rweCCEGziYqqzaXLDxg6NIyASl4W265eL5GakmXRbQr/CB/envDh7fM8rlar8arkQ/2eYez7ZAvt/9tLhurkpc3M5sahS1w7eAFtWhYKlZLKjarRZGArvCqV/EuOUqlE6awEZzMUayUkgwHf1Hj0WgN6rT7nv2w9ep0evdaALluHXmvAoNWTkZmBLvvv1/z9el2WltQHabmtObWzmm5TuuDq7lLsGtoMbsl3r/5gthCUmwhBM2ncKJDGjQItvt0jR2Np0TzvzipGjrEOXWb149N2sx0iBNMTUrl6IIabR68g6Qw4uTlTtUVN2k7uhqunm9zl2QSlSoWLxgUXE91VlXg7ke9fX0+LvuHUbVO8s1MqtYpqjapy5cg1qocFm6YQKyJC0M5cv55AZNsacpfhkIozrZLa2Qnfav5seGEFLcZ0JLBRsGWKs4CE6/e5su8c987fAkDj60FImzp0mdUPlZM41JSGqXuF+lT2YcR7g9m3+neuHb9Ot8nFuz7d+umWfDNrnQhBwfrdvZtKhQpihHtrNmrtS+xf9Aurh35M1Cv9CBtiuoHZLcloNBJ36jpnNh8hKyUTv5AK1GhXn7BhkSYZE1cwD4VCQbsRbdi35nfO779A3ba1i1xGqVJSPSyYC39conaE6aZrk/t6IIgQtDuSZESlsr9OF7bQOaYk2j7XjYgJUXwQNp163ZvazNQ8RqOR2MOXOf/LMbQZWgIaVqXt5G64lbPPe8jkZO57A9sObcWqad9SPTykWGOARgxozpoZ35s0BK2BCEEHIq4Lml9JZppXq9UMWDSerwZ9wKQdr5m5stKTDAau/h7DhV9PIen0VAmvQfsXe+Hinv/MJYJtUCgU9JjyBNs+2UHvl3sW+XqlUkmdVjU5ty+GepF1LFChZYgQFAQZVW9TFzdvd079fIiGvVvIXU4ug07Ppb1nubznDEajkeDWOdf21C62P2uALbDUCDH+weXReGuKfQtEeO9mrJn+PXXb1i7zKW9rOBUKIgTtTsFzggjWauiqKXwcMZPQXuGy3j+oz9YRs/ME136PQaFSUrNDKF1fHyg6tdi5zuPas2rat4x4b3CR9xMqlUrqt6/L2T3nCe1Yz0IVmpfYu+1AfEI63353FHeNM3oTzVFojWzlumBJTolCzozlrSY+wY+Tv2Dg4glmrCwvo9HI9T8ucGbzEZRqFXW6NKL7W4NRqux3mCxrZ+lxQpUqJVETOrJjyW66P1/4KFOSJCFJEqejz4kQFKzHO/N/5fXXumGUjGg0hd85bIrrgimJGWz55hCZ6dkAGCUjHuXc6DowDO/yttHBw9q0ndSVj9vMIv7qXfxCKpp9e+nxqRxZ8xtJNxMIblWbbnMGiRafAwuqV5njv5wk7uIdAmpVyvO8XqvnwHd/cPPsLZr1bMKgN/qWbXtWcioURAjahaGDw/jhxxOMGWWea0oPJ15WKBScPx5L9MYTDJrYDr+K/4xKk3g/lW8WRvPcHPu/Cbw4StoaBBi6cgprRn762HBrpiRJEpeiTxOz4wQaXw+aDWmLT1V/s2xLKB05Z4voNjmK1dPXMvL9Ibmn5TNTM9m76gCJcUm0ebol7Ue2la0+cxEhaAeaNQvi3v00Vqz8k4YNKxNavxJubjkdGNLTtWi1en5YfwJXFzWenq74R9Sier2AYq372IFL7P/lDLUaBNLt6XAO773AqBe7oPF4fNglH39PQsOD+WvPBZp3KPq+o9KylVOipeFfKwD/2gH8uWI3Lcd0Mtl6k+MSObrmN9Lup1CzYwN6zhsqTncKeaid1UQOa83elftp1rMx0Sv3o8/W0X5kW/yDi55Bp7isqRUIoHj4LT8/DRsEGDf8OM6C5QhlcenyA+LiUjh56ja6vwcJNhgkjEYYN7YlAGmp2ew484Db1+NRqpQMmtiO+3HJXDkXh6ubM5E9GuSu7/a1eNYvP8DACZFs+eYQ7Xs25NrFe4TUqZhviBqNRj6auYHajYLoOdR8PR1tKQRL2hrU6/V8GD6dqX+8g7Nr6QfFlAwGzm07xuXfzuFVyZuwYZF4VvQu9foE85OzFfio7Yt2kZ2eTYcxkXiV9zT5+uUIwXYVph0xGo3h+T0nQtBBxfn6sPXbQ5z88xoRnesQGFyejav+oNfICE4cvELSgzS8y3vQe1QrnF3USJLE0rlbyUjNpm33UFp2qpvvetNTs1j/5QGeGhlBOV/z3EBtzyEIcHbrUQ4s2c74jTNLvKxkMHDsuwPEHrlCaK9wanYIFaO32AhrCUFzEyEoWIU4Xx/0OgMqtTL3IKnT6tm+7gjN29emYlDeoDEajeh1BpycCz+LfuzAJdJTs2nbLdQstYP9B+HKQe/TuH9Lmj5dvGswBn1O+N08eoWmg9tQrYXlpu4Syk4EoHkVFoL2N76WUGxqJ9VjrQQnZzVPDmuZbwBCTseYogIQoEnrGhw7cInsTJ3JanU0w7+Zys55G8hKySj0dQa9gUNf7WHzjNVUqFuZPh+MFgFoYxwlAK2VCEEHFZBgvm9kCoWCboPC2bfttNm2YUtKc5BTq9X0/XgsKwYsyPd5g07Pnyt2s3nGagIaVqX3glFUDbevMR0F+2JtHWIeEiEomEWthoFcu3DXbOu31g9UQUoThLU6hOIV4MPBz3/NfUyv1fHHl7vYPHMNQU1D6L1gFFWaVTdlqYIFiVag/MQtEoLZiO4YZTdkxWTeb/Y/6vdsxtktR7h/8Q7hwyOJGNdZ7tKEMnKkALTmL62iJSiYjae3hvPHY822fmv+YOWnNAc9SWegdudGrB2/mOBWdXjq/0ZQ2Y4m4nVUjhSA1k60BB2YuadWGjChLVvWHGLfttN06deU4Dp5h2NyNMUdSUafrePQymjir9ylxdhOBIRWsUB1guB4RAgKZqNUKuk1IoKMtCz2bj7Fz6v+oM/o1lSrVUHu0qyWLkvLoZXRJFy9R/NRHWg98Qm5SxJMzNFagdZ+xkaEoGB2Gg9Xug9uTqc+Tdix7ghb1vxJqy71aNK6hknmJLOlewYh/9agLkvLoRXRJFy7R4vRHan4bFeZqhPMydEC0BaIEHRwlpxt3sXViV4jIpAkiYM7z/Hp7I30Gd2KqjUdr2X4MAh1WVr+XL6bxBsPaDmmIxXqBMpdmmAmjhiA1t4KBBGCggyUSiVtuobSsnNdPnttE6NejCrTFEy22BrUZmo5sWQDN26n03JsJyrUrix3SYIZOWIA2goRgoJs1GoV42d1Y8mbWxg7vRvefuYZa9SaaDO1RK/cR+KtJNqPakPj0DpylyQIZmELrUAQIShg2VOi/6bxcGXi7J588c4vVKnhT7PImgTXLvmkstbeGszOyCZ6xT6S4pLpMKYtlWr8/TuWYt5BwbaIVqB1EyEoyM7d05XJb/Yi5vhNPp+3jVcWDkbj4Sp3WSaRlZ7NnpU54ddxTCQVa+S9/lmaCXgF2+CoAWgrrUAQIShYCbVaRWh4NQKq+uLm7lL0AjbgyObjnN8fQ9T4jvmG36NEENofEYC2QYwYIwDmHVC7JFRqJempWaVa1lo+fAm3Elk9fS1KtZJh858uMgAfctSDpj0Sf0vbIVqCglUJqVOJq+fv0rBFsNyllJhkkIhe/hvJ91MZ8FofXEvRohUtQtvnyAFoLV9ES0K0BAWrcvlsHPXDqpZ6ebk+hDdOxbJq2rdUDw+h36xepQrAhxz5IGrrxN/O9oiWoJBLzl6iAMkJ6ei0elQq2/pu9tvXB0hPzmDEe4NRqVUmWadoEdoeRw9AW2wFgmgJClZk2dtbGT2t7GNlWurDKEkSP83fjFcFL7o/38VkAfiQox9UbUVFbbL4W9kwEYKCVTAYJFRqFc4upgkScwdhdkY2a2Z8T7OejWnStaHZtiMOrtZN/H1y2GorEEQICv8iVy/R+7eTCK5d0SbuD0y6k8w3M9fx5AvdqNrQ/FMciQOtdRJ/lxy2HIAgQlCwEhWDfDh/PLbUt0fkxxwfztgzN9n0/jaGzBuIT4A3kDMU2vp5m0i5n2ry7T0kTrlZF/G3sB8iBAWroFAo6DoojA3LD8hdSoFO7jzN4Y3HGPbuoMd6fxr0Bnwre+PuozF7DeLgKy/xZeRxtt4KBBGCQj7kOiUaFlmL7EydSddpqg9p9Ip9xN9MpO/MXiiVj39s3Dzd6DA60uQdYwoiDsLyEO/74+whAEGEoGBlKgf7ce7YDbnLyCUZJNbP24RfkA8dx0TKXU4u0SKxHPFe2zcRgkK+5GoNNm1Tg8tn4ky6ztJ+Y81Kz+kB2rx3Uxp1aVCiZTOSM8hMzUSSpFJtu7jEwdm8xPubP3tpBYK4WV6wMhUCvbl3K8nk6y3pVEuJtxPZMH8z/WY9hXelkt+0/snwpQTVr4zaSU35an5Eje9Q4nUU18MDtbi53nRE+BXMngIQREtQsDJKpRKj0ShrDddPxrL5o+0Mmz+oVAEI8NyKZ/Cp7I1Br6d8VT8TV5g/ceA2DfE+OhbREhQKJPcwaqZWnNbg8e2nuHb8BsPmD8rTAaYkvMp70nNq11IvX1qiVVh6IvyKZm+tQBAtQcEKObmo0WbrzbLugj7ERqORXV/sJfluMn2m9yxTAD7q97V/svnDX0yyrpIQnTmKT7xXxWOPAQiiJShYoaDq5fl+6W+4uDqRkZqFQf+vziUKcHN3wdPbDc9yGrx8cv719HbD09sNN3cXFApFkdvRZeuIPX2LkztPk5mWRZOuDakXWcekv0uzJ5vg5CLfx0y0DAsmgq/47DUAQYSgUAQ5Tom269GQ+3HJuHu6ovFwQe30+P13RqORzPRsUpMySU3KJCUpg1vX4klNziA1KZPM9Gx4eFmxgCxMdnJF7awiqH4gTzzXGY2Xm1l+l7JMqWRKIgz/IcJPeJQIQcHqqJ1UBFT1LfB5hUKBxsMVjYcrFYNKH9Al6S1qLxw5DEX4lY49twJBhKBQDPbWQUZwnDAUwVc29h6AIEJQcGAlvXfQHj0aEvYSiCL4TMMRAhBECArFZK+tQRGE/7DlQBTBZ1qOEoAgQlAQRBDm49+hYm2hKEJPMBURgoIgFCm/0LFUMIrAsyxHagWCCEGhBOz1lCiI1mBpFBVOxQ1JEXLWw9ECEEQICkIuEYSmJcLNtjhiAIIYNk0oIbmmWLIURz0QCI7Nkfd7EYKCIAgOzJEDEEQICqUgWoOCYB/Evi5CUBDyJQ4Ogr0T+3gOEYKCUABxkBDsldi3/yFCUCgVez8l+pA4WAj2RuzTjxMhKAhFEAcNwV6IfTkvEYJCqTlKaxDEwUOwfWIfzp8IQUEoJnEQEWyV2HcLJkJQKBNHag2COJgItkfss4UTISgIJSQOKoKtEPtq0UQICmXmaK1BEAcXwfqJfbR4RAgKQimJg4xgrcS+WXwiBAWTcMTWIIiDjWB9xD5ZMiIEBaGMxEFHsBZiXyw5EYKCyThqaxDEwUeQV1BKotgHS0mEoCCYiDgICXIQ+13ZKIxGY8FPKhSHLViLIAiCIJjDA6PR2C2/JwoNQUEQBEGwZ+J0qCAIguCwRAgKgiAIDkuEoCAIguCwRAgKgiAIDkuEoCAIguCw/h9v1pVwaqwM4gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(12, 8))\n",
    "ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())\n",
    "ax.set_extent([120.8, 122.1, 30.6, 31.9], crs=ccrs.PlateCarree())\n",
    "\n",
    "province = shpreader.Reader('Shanghai.shp')\n",
    "ax.add_geometries(province.geometries(), crs=ccrs.PlateCarree(), linewidths=0.5,edgecolor='k',facecolor='none')\n",
    "\n",
    "cf = ax.contourf(xgrid, ygrid, z1, levels=np.linspace(0,800,21), cmap=cmaps.MPL_rainbow, transform=ccrs.PlateCarree())\n",
    "\n",
    "def shp2clip(originfig, ax, shpfile):\n",
    "    sf = shapefile.Reader(shpfile)\n",
    "    vertices = []\n",
    "    codes = []\n",
    "    for shape_rec in sf.shapeRecords():\n",
    "        pts = shape_rec.shape.points\n",
    "        prt = list(shape_rec.shape.parts) + [len(pts)]\n",
    "        for i in range(len(prt) - 1):\n",
    "            for j in range(prt[i], prt[i + 1]):\n",
    "                vertices.append((pts[j][0], pts[j][1]))\n",
    "            codes += [Path.MOVETO]\n",
    "            codes += [Path.LINETO] * (prt[i + 1] - prt[i] - 2)\n",
    "            codes += [Path.CLOSEPOLY]\n",
    "        clip = Path(vertices, codes)\n",
    "        clip = PathPatch(clip, transform=ax.transData)\n",
    "    for contour in originfig.collections:\n",
    "        contour.set_clip_path(clip)\n",
    "    return contour\n",
    "\n",
    "shp2clip(cf, ax, 'Shanghai.shp')\n",
    "\n",
    "cb = plt.colorbar(cf)\n",
    "cb.set_label('Rainfall(mm)',fontsize=15)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
